Python-slim镜像制作
Python基础镜像制作,添加中文字体
1. 字体处理
Section titled “1. 字体处理”Windows 电脑上,可以在
C:\Windows\Fonts下找到。 或者下载开源且风格类似的 思源宋体 (Noto Serif CJK SC) 和 STIX (用于数学公式)
FROM python:3.11-slim
# 使用国内镜像源# 防止 hidden 的 bookworm 源干扰RUN rm -rf /etc/apt/sources.list.d/* /etc/apt/sources.list
RUN echo "deb http://mirrors.aliyun.com/debian/ testing main non-free non-free-firmware contrib" > /etc/apt/sources.list && \ echo "deb-src http://mirrors.aliyun.com/debian/ testing main non-free non-free-firmware contrib" >> /etc/apt/sources.list && \ echo "deb http://mirrors.aliyun.com/debian-security/ testing-security main non-free non-free-firmware contrib" >> /etc/apt/sources.list
# 1. 更新源并安装 fontconfig# --no-install-recommends: 避免安装不必要的推荐包,保持镜像小# rm -rf /var/lib/apt/lists/*: 安装后删除 apt 缓存,减小镜像体积 (Slim 镜像的最佳实践)RUN apt-get update && \ apt-get install -y --no-install-recommends fontconfig && \ rm -rf /var/lib/apt/lists/*
# 2. 创建字体目录RUN mkdir -p /usr/share/fonts/truetype/custom
# 3. 拷贝字体文件 (确保你的项目目录下有 fonts/simsun.ttc)COPY ./fonts/simsun.ttc /usr/share/fonts/truetype/custom/
# 4. 刷新系统字体缓存 (现在这个命令可以成功运行了)RUN fc-cache -fv
# --- 关键修改结束 ---
# 下面是原本的构建步骤WORKDIR /appCOPY requirements.txt .RUN pip install --no-cache-dir -r requirements.txtCOPY . .
# ... CMD 等指令为什么要做这些修改?
Section titled “为什么要做这些修改?”-
apt-get install fontconfig:python:3.11(完整版) 基于 Debian 完整版,通常自带很多工具。python:3.11-slim基于 Debian Slim,砍掉了非必要的工具(包括管理字体的工具)。如果不手动安装fontconfig,你就无法将新字体注册到系统里。
-
rm -rf /var/lib/apt/lists/*:- 在
slim镜像中,安装完软件后如果不清理缓存,会白白增加这一层的体积。这是编写高质量 Dockerfile 的标准操作。
- 在
- 拷贝指令 (
COPY):本身没有影响,完全通用。 - 刷新指令 (
fc-cache):在slim镜像下必须先安装fontconfig才能用。