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` 来构建我们的镜像
FROM microsoft/aspnetcore:latest AS base
RUN apt-get update && apt-get install -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>

 

posted @ 2019-11-04 13:52  Rach  阅读(752)  评论(1编辑  收藏  举报