背景
在.net 5
应用中,使用了Excel
文件处理,在Docker
容器中运行就会出现关于libgdiplus
的异常。虽然在Dockerfile
中可以使用以下内容解决异常,但是这个速度太慢了。每次构建慢的让人怀疑人生,最重要的是还可能失败。
RUN apt-get update && apt-get install -y libgdiplus libc6-dev && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
为了提高构建速度,所以使用官方的基础镜像再二次构建一个基础镜像,默认安装 libgdiplus
,这样每次构建速度就会提升好多好多。默认安装了libgdiplus
等库,以便支持Excel
导入导出
构建基础镜像的Dockerfile
Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:5.0
RUN apt-get update && apt-get install -y libgdiplus libc6-dev && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
# 安装fontconfig库,用于Pdf导出
RUN apt-get update && apt-get install -y fontconfig
# 复制字体文件
COPY /simsun.ttc /usr/share/fonts/simsun.ttc
如果CPU架构是ARM架构的话,引用的官方基础镜像包就要做一些调整。详情参考Dockerfile.arm
Dockerfile.arm
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim-arm64v8
RUN apt-get update && apt-get install -y libgdiplus libc6-dev && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
# 安装fontconfig库,用于Pdf导出
RUN apt-get update && apt-get install -y fontconfig
# 复制字体文件
COPY /simsun.ttc /usr/share/fonts/simsun.ttc
字体文件
字体simsun.ttc已构建镜像
如果自己不构建镜像,也可以使用已经构建好的镜像。
docker pull skyfinder/dotnet-aspnet5
ARM
架构的CPU
可以使用以下镜像
docker pull skyfinder/dotnet-aspnet5-buster-slim-arm64v8