對于微軟官方提供的鏡像microsoft/aspnetcore2.0來說,它沒有安裝libgdiplus包,所以當(dāng)你使用了draw去畫圖時(shí),就會出現(xiàn)一些問題,我們一般會安裝第三方的包包,ZKWeb.System.Drawing,而發(fā)布到docker里之后,運(yùn)行時(shí),會出現(xiàn)找不到dll的情況!
原因:
微軟的aspnetcore鏡像是在Ubuntu操作系統(tǒng)基礎(chǔ)之上的,而這個(gè)系統(tǒng)上并沒有安裝libgdiplus,所以需要我們手動把鏡像運(yùn)行后,先安裝一下,然后commit成自己的鏡像,以后對于這種需要Drawing的項(xiàng)目,就引用自己的鏡像就可以了。
解決方法(一):
進(jìn)行鏡像對應(yīng)的容器
docker run -it containerid
然后去安裝它
apt-getinstall libgdiplus
然后退出
exit
最后commit成為自己的鏡像
sudo docker commit 8b10012d942f? lind/aspnetcore:2.0
你可以把這個(gè)鏡像導(dǎo)出,放到自己的服務(wù)器上
docker save 8b10012d942f > lind_aspnetcore.tar
最后,在目標(biāo)服務(wù)器上運(yùn)行即可!
解決方法(二):
修改你的Dockerfile文件,使用RUN命令去安裝你的libgdiplus,但個(gè)人覺得,這種有些浪費(fèi)資源,畢竟需要每個(gè)容器都要去安裝一個(gè)它,而且下載速度不敢恭維!
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"]