System.Drawing.Common在docker报错 The type initializer for 'Gdip' threw an exception

简介: 今天在asp.net core站点上做一个发送邮件附带二维码的功能,为了方便邮件接受者直接手机扫描打开特定h5页面。采用QRCoder,代码很简单几行 QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.

今天在asp.net core站点上做一个发送邮件附带二维码的功能,为了方便邮件接受者直接手机扫描打开特定h5页面。采用QRCoder,代码很简单几行

 QRCodeGenerator qrGenerator = new QRCodeGenerator();
 QRCodeData qrCodeData = qrGenerator.CreateQrCode(content, QRCodeGenerator.ECCLevel.Q);
 Base64QRCode qrCode = new Base64QRCode(qrCodeData);

 return qrCode.GetGraphic(5);

返回二维码的base64格式,嵌入img中显示,运行->测试,一切顺利。 提交代码,生成镜像更新到站点,同样的路径走一遍,发现收到的邮件中没有图片。检查日志发现

An unhandled exception has occurred while executing the request.
System.TypeInitializationException: The type initializer for 'Gdip' threw an exception. ---> System.DllNotFoundException: Unable to load shared library 'libdl' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibdl: cannot open shared object file: No such file or directory

at Interop.Libdl.dlopen(String fileName, Int32 flag)
at System.Drawing.SafeNativeMethods.Gdip.LoadNativeLibrary()

github早有前人提交过同样的问题,解决方法是在生成镜像时安装缺失的包


FROM microsoft/aspnetcore:2.0 AS base
RUN apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev

重新生成测试通过。
因为安装包的缘故,整个镜像生成时间将近20分钟,我就顺便做了一个包含安装包的基础镜像,这样方便后续更新

docker push wyxnj/aspnetcore:latest

用这个作为asp.net core runtime的基础镜像,可以和以前一样快速生成镜像并更新站点。

目录
相关文章
|
1月前
|
Java 数据安全/隐私保护 Docker
Docker Desktop 启动报错 Unexpected WSL error 问题解决
Docker Desktop 启动报错 Unexpected WSL error 问题解决
413 0
|
3月前
|
JSON 网络协议 数据安全/隐私保护
nps npc docker 部署 解决端口报错问题
nps npc docker 部署 解决端口报错问题
129 0
|
4月前
|
存储 Docker 容器
Docker load 大镜像(17G) 报错no space left on device
Docker load 大镜像(17G) 报错no space left on device
146 0
|
5月前
|
Java 开发工具 Docker
最全解决docker配置kibana报错 Kibana server is not ready yet
最全解决docker配置kibana报错 Kibana server is not ready yet
301 0
|
4月前
|
前端开发 Java 数据安全/隐私保护
Docker Desktop 启动报错 Unexpected WSL error 问题解决
Docker Desktop 启动报错 Unexpected WSL error 问题解决
|
3月前
|
安全 Linux 数据安全/隐私保护
docker运行报错docker: Error response from daemon: AppArmor enabled on system but the docker-default prof
docker运行报错docker: Error response from daemon: AppArmor enabled on system but the docker-default prof
75 0
|
6月前
|
Linux Docker Windows
docker pull 报错解决:error pulling image configuration: Get https:..
docker pull 报错解决:error pulling image configuration: Get https:..
224 0
|
6月前
|
Docker 容器
三步解决Docker拉取镜像报错:x509: certificate has expired or is not yet v..
三步解决Docker拉取镜像报错:x509: certificate has expired or is not yet v..
602 0
|
6月前
|
关系型数据库 MySQL Devops
docker容器刚启动就停止 — 运行mysql 报错 mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
docker容器刚启动就停止 — 运行mysql 报错 mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
257 0
|
3天前
|
运维 前端开发 Devops
云效产品使用报错问题之流水线打包docker镜像时报网络代理有问题如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。