linux - 如何在 Linux Azure Function 启动命令上安装 libgdiplus apt 包?
问题描述
我们有一个在 Linux Azure Function App 上运行的 .NET Core 3.1 函数,但由于它使用 System.Drawing 库,它取决于libgdiplus
默认 docker 映像中未安装的库,因此该函数失败。
我读了很多文章建议在Function App中添加以下启动命令,但它不起作用,它只是没有安装包。
apt-get update && apt-get install -y --allow-unauthenticated apt-utils libc6-dev libgdiplus libx11-dev && rm -rf /var/lib/apt/lists/*
我在 docker 日志上看到了这个,但包仍然不存在。
docker run -d -p 8122:80 --name <image-name> -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=true -e WEBSITE_SITE_NAME=<website-name> -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=<hostname> -e WEBSITE_INSTANCE_ID=<instanceId> -e HTTP_LOGGING_ENABLED=1 mcr.microsoft.com/azure-functions/dotnet:3.0-appservice-stage5 apt-get update && apt-get install -y --allow-unauthenticated apt-utils libc6-dev libgdiplus libx11-dev && rm -rf /var/lib/apt/lists/*
我可以通过在 Azure 门户上打开 SSH 会话并运行命令来手动安装包,并成功运行该功能,但显然下次重新启动时,包已经消失,因为容器也重新启动。
任何其他选项或解决此问题的任何帮助将不胜感激。
谢谢!
解决方案
我认为正确的方法是拥有自己的自定义 Dockerfile 来运行apt-get
您提供的命令。
这是一个看起来像的片段:
FROM mcr.microsoft.com/azure-functions/dotnet:3.0-appservice-stage5
RUN apt-get update \
&& apt-get install -y --allow-unauthenticated \
apt-utils \
libc6-dev \
libgdiplus \
libx11-dev \
&& rm -rf /var/lib/apt/lists/*
有关如何将自定义 Docker 容器与 Azure Functions 一起使用的更多详细信息,请参阅文档。
推荐阅读
- maven - 如何在 pom.xml 中检索 Maven 内部版本号?
- angular - 如何在Angular 4中使用打字稿基于其他下拉选择值显示下拉值
- c++ - 在 Windows 中运行 .exe 文件时如何防止 ucrtbase.dll 崩溃?
- c - 从文件的 inode 号获取文件名
- dashboard - 如何将现有仪表板复制到 Appdynamics 中的新项目
- python - 在哪里可以找到内置类和 ABC 的 Python 类型提示?
- javascript - Web 组件中页面加载时的模式弹出窗口
- python-3.x - 语音识别库给出输入设备错误
- mysql - MySQL 显示“possible_keys”但不使用它
- php - Lumen count():参数必须是数组或者实现了Countable的对象