文章出處

回到目錄

對于微軟官方提供的鏡像microsoft/aspnetcore2.0來說,它沒有安裝libgdiplus包,所以當你使用了draw去畫圖時,就會出現一些問題,我們一般會安裝第三方的包包,ZKWeb.System.Drawing,而發布到docker里之后,運行時,會出現找不到dll的情況!

原因:

微軟的aspnetcore鏡像是在Ubuntu操作系統基礎之上的,而這個系統上并沒有安裝libgdiplus,所以需要我們手動把鏡像運行后,先安裝一下,然后commit成自己的鏡像,以后對于這種需要Drawing的項目,就引用自己的鏡像就可以了。

解決方法(一):

進行鏡像對應的容器

docker run -it containerid

然后去安裝它

apt-get install libgdiplus

然后退出

exit

最后commit成為自己的鏡像

sudo docker commit 8b10012d942f  lind/aspnetcore:2.0 

你可以把這個鏡像導出,放到自己的服務器上

docker save 8b10012d942f > lind_aspnetcore.tar

最后,在目標服務器上運行即可!

解決方法(二):

修改你的Dockerfile文件,使用RUN命令去安裝你的libgdiplus,但個人覺得,這種有些浪費資源,畢竟需要每個容器都要去安裝一個它,而且下載速度不敢恭維!

 

FROM microsoft/aspnetcore:2.0
ARG source

RUN apt-get update
RUN apt-get install libgdiplus

WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "LindSMS.dll"]

 

當然上面的方案二不會產生新的鏡像,這點到是挺干凈,哈哈!

感謝閱讀!

 回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()