1. 前言
项目上部署Spring Boot应用至内网环境的时候,发现在调用生成Excel时主机缺失相应字体,又因为内网机器无法访问互联网下载相应字体,导致功能调用失败,为解决此问题,需要在打包Spring Boot镜像时,将需要的字体一并打包。
2. 打包字体
在Linux Docker镜像中生成Excel文件时,如果缺少字体,可能会导致生成的Excel文件在打开时出现字体缺失或显示不正确的问题。以下是解决这一问题的步骤:
2.1 安装字体
你需要在Docker镜像中安装所需的字体。常见的字体包包括 ttf-mscorefonts-installer
(微软核心字体)和 fonts-noto
(Google的Noto字体)。你可以在Dockerfile中添加以下命令来安装这些字体:
# 使用基础镜像
FROM ubuntu:20.04
# 更新包列表并安装字体
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ttf-mscorefonts-installer \
fonts-noto \
fonts-dejavu-core \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 其他安装步骤...
2.2 确保字体配置正确
安装字体后,确保字体配置文件已更新。你可以在Dockerfile中添加以下命令来刷新字体缓存:
# 刷新字体缓存
RUN fc-cache -fv
2.3 验证字体安装
你可以在容器中运行以下命令来验证字体是否已正确安装(例如查询所有已安装的英文字体):
docker run -it --rm your_image_name fc-list :lang=en
3.0 完整示例
# 使用基础镜像
FROM ubuntu:20.04
# 配置阿里云镜像代理
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list
# 更新包列表并安装字体
RUN apt-get update && \
apt-get install -y --no-install-recommends \
ttf-mscorefonts-installer \
fonts-noto \
fonts-dejavu-core \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 刷新字体缓存
RUN fc-cache -fv
# 安装其他依赖项(例如Python和相关库)
RUN apt-get update && \
apt-get install -y python3 python3-pip && \
pip3 install pandas openpyxl
# 复制并运行生成Excel文件的脚本
COPY generate_excel.py /app/generate_excel.py
CMD ["python3", "/app/generate_excel.py"]