对于微软官方提供的镜像microsoft/aspnetcore2.0来说,它没有安装libgdiplus包,所以当你使用了draw去画图时,就会出现一些问题,我们一般会安装第三方的包包,ZKWeb.System.Drawing,而发布到docker里之后,运行时,会出现找不到dll的情况!
原因:
微软的aspnetcore镜像是在Ubuntu操作系统基础之上的,而这个系统上并没有安装libgdiplus,所以需要我们手动把镜像运行后,先安装一下,然后commit成自己的镜像,以后对于这种需要Drawing的项目,就引用自己的镜像就可以了。
解决方法(一):
进行镜像对应的容器
docker run -it containerid
然后去安装它
apt-getinstall libgdiplus
然后退出
exit
最后commit成为自己的镜像
sudo docker commit 8b10012d942f lind/aspnetcore:2.0
你可以把这个镜像导出,放到自己的服务器上
docker save 8b10012d942f > lind_aspnetcore.tar
最后,在目标服务器上运行即可!
解决方法(二):
修改你的Dockerfile文件,使用RUN命令去安装你的libgdiplus,但个人觉得,这种有些浪费资源,毕竟需要每个容器都要去安装一个它,而且下载速度不敢恭维!
FROM microsoft/aspnetcore:2.0ARG source
RUN apt-get update
RUN apt-get install libgdiplus
WORKDIR/app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet","LindSMS.dll"]
网友评论