Docker中运行.net core 验证码不显示

问题根源:

        验证码图片生成代码使用了System.Drawing,但是在Dockerfile的引用: microsoft/dotnet:2.2-aspnetcore-runtime 中微软官方并没有集成libgdiplus

        所以解决方法有3个

       1、在Dockerfile文件中添加RUN参数  安装libgdiplus

FROM microsoft/dotnet:2.2-aspnetcore-runtime
RUN apt-get update
RUN apt-get install libgdiplus -y
WORKDIR /app
COPY publish目录 /app
ENTRYPOINT ["dotnet", "入口程序"]

       2、运行原始web容器,在容器中安装好libgdiplus,再重新打包镜像。(未尝试)

       

//创建一个容器 mycont,在后台运行
docker run -dit --name mycont xxxx

//进入虚拟命令对话框
docker exec -it  /bin/bash

//更新(不执行更新操作可能出现找不到libgdiplush的情况)
apt-get update

//安装
apt-get install libgdiplus

//退出
exit

//提交新镜像
docker commit mycont  myimages/aspnetcore:2.0

//也可以把镜像导出,放到其他服务器上
docker save mycont > lind_aspnetcore.tar

       3、更改验证码生成方式,重新打包发布(链接是第三方图片处理类在liunx下有很强的兼容性,避免跳坑)

            https://github.com/SixLabors/ImageSharp

参考:https://www.cnblogs.com/lori/p/7543886.html

原文地址:https://www.cnblogs.com/yhnet/p/11731133.html