netcore程序部署 docker 异常 --生成图片二维码缺少libdl

最近因业务需求需要在程序中实现二维码图片生成,于是就用到QRCoder开发库。最终在windows环境下部署运行没问题,但切换到docker(centos7.0)后发现是有问题的。

错误信息提示:The type initializer for 'Gdip' threw an exception. Unable to load shared library 'libdl' or one of its dependencies.

如下图所示:


通过报错分析,docker容器缺少libdl文件导致报错。

需要在镜像里安装组件libgdiplus 、libc6-dev

构建Dockerfile内容如下:

#基于 `microsoft/aspnetcore:latest` 来构建我们的镜像FROMmicrosoft/aspnetcore:latest AS baseRUNapt-get update && apt-getinstall-y apt-utils libgdiplus libc6-dev#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中COPY./publish#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹WORKDIR/publish#使用`主程序.dll`来运行应用程序CMD["dotnet","主程序.dll"]

花了我大半天的时间终于解决了。

顺便说一下,如果各位用的Core2.0 以上版本,直接把Dockerfile中 < FROM microsoft/aspnetcore:latest AS base>的内容替换<FROM microsoft/aspnetcore:版本号 AS base>

  IT.互联网   技术

作者  :  崔涵韵

升职加薪带你走进职场晋升巅峰宝座




小程序

面试一点通

创作中心

分享职场知识、帮助到更多的人

软件开发

承接、各行各业、软件开发需求

最新发布