Alpine基础镜像 -- 安装中文字体

# Alpine基础镜像 -- 安装字体

# 使用root账户
docker exec -u 0 -it node-red /bin/bash

# 安装字体管理工具
apk add --no-cache fontconfig ttf-dejavu

# 安装中文字体 -- 一定要使用加速  否则太慢了
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add --no-cache wqy-zenhei font-noto-cjk

# 详细输出缓存更新过程
fc-cache -fv  

# 查看字体
fc-list : family

# 使用用户账户
docker exec -it node-red /bin/bash

# 定位缓存目录(我的运行结果是 /root/.cache/matplotlib)
python -c "import matplotlib; print(matplotlib.get_cachedir())"  

# 删除缓存文件
rm -rf ~/.cache/matplotlib/* 

# python中查看字体是否生效
echo '
from matplotlib import font_manager
print([f.name for f in font_manager.fontManager.ttflist if "WenQuanYi Zen Hei" in f.name])
' > 1.py
cat 1.py
python3 1.py

Debian/Ubuntu 基础镜像 -- 安装中文字体

# Debian/Ubuntu 基础镜像 -- 安装字体

# 使用root账户 默认好像就是root用户 可以不用加 -u 0
docker exec -u 0 -it python-3-9-slim /bin/bash

# 查看镜像系统
uname -a
Linux 0d72adff0060 6.8.0-62-generic #65-Ubuntu SMP PREEMPT_DYNAMIC Mon May 19 17:15:03 UTC 2025 x86_64 GNU/Linux

# 安装字体管理工具
apt-get update && apt-get install -y fontconfig

# 在 Ubuntu 的默认 sources.list 文件中,软件源通常分为两类:
# 1.主软件源​​(archive.ubuntu.com)——提供常规软件包
# 2.安全更新源​​(security.ubuntu.com)——专门提供安全补丁和关键更新

# 安装中文字体 -- Debian 加速
sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list && \
sed -i 's|security.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list && \
apt update && apt install fonts-wqy-zenhei fonts-noto-cjk

# 安装中文字体 -- Ubuntu 加速
sed -i 's|archive.ubuntu.com|mirrors.aliyun.com|g' /etc/apt/sources.list && \
sed -i 's|security.ubuntu.com|mirrors.aliyun.com|g' /etc/apt/sources.list && \
apt update && apt install fonts-wqy-zenhei fonts-noto-cjk

# 使用普通用户去清缓存
docker exec -it python-3-9-slim /bin/bash

# 详细输出缓存更新过程
fc-cache -fv  

# 查看字体
fc-list : family

# 定位缓存目录(我的运行结果是 /root/.cache/matplotlib)
python3 -c "import matplotlib; print(matplotlib.get_cachedir())"  

# 删除缓存文件
rm -rf /root/.cache/matplotlib/* 

# python中查看字体是否生效
echo '
from matplotlib import font_manager
print([f.name for f in font_manager.fontManager.ttflist if "WenQuanYi Zen Hei" in f.name])
' > 1.py
cat 1.py
python3 1.py

matplotlib绘图测试

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

simple_df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 32, 37, 28],
    'Salary': [50000, 65000, 72000, 48000]
})
simple_df

plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei'] 
plt.rcParams['axes.unicode_minus'] = False 

plt.figure(figsize=(10, 6))
plt.bar(simple_df['Name'], simple_df['Salary'])
plt.title('员工薪资分布')
plt.xlabel('姓名')
plt.ylabel('薪资')
plt.grid(True)

# plt.show()
plt.savefig(
    '/data/test/1.png',
    dpi=100,           # 分辨率(默认100,300更清晰)
    bbox_inches='tight',  # 自动裁剪空白
    facecolor='white'   # 背景色
)
# 关闭图形(避免内存泄漏)
plt.close()

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐