1.概述

在发布开发的应用时,往往会涉及中文字体使用环境问题,本文介绍如何在基础镜像的基础之上构建支持中文的镜像。

本文使用的基础镜像:openjdk:17.0.2-jdk-slim-buster

2. Dockerfile 编写

以下是示例文件,请根据自己项目环境运行需要进行修改。

# 基于 openjdk:17.0.2-jdk-slim-buster 镜像
FROM openjdk:17.0.2-jdk-slim-buster

# 安装中文语言包和其他必要的软件包
RUN apt-get update && \
    apt-get install -y locales ttf-wqy-zenhei && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 生成中文 UTF-8 语言环境
RUN sed -i '/zh_CN.UTF-8/s/^# //g' /etc/locale.gen && \
    locale-gen zh_CN.UTF-8

# 设置环境变量
ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN:zh
ENV LC_ALL zh_CN.UTF-8

# 确认安装成功并输出中文字符
RUN echo "测试中文支持"

# 复制应用程序到容器中(假设应用程序在本地目录的 app 文件夹中)
COPY app /app

# 设置工作目录
WORKDIR /app

# 运行 Java 应用程序(请根据实际应用程序的启动命令修改)
CMD ["java", "-jar", "your-app.jar"]
  • openjdk:17.0.2-jdk-slim-buster 基础镜像开始。

  • 安装了 locales 包,以支持不同的语言环境。

  • 安装中文字体ttf-wqy-zenhei fonts-noto-cjk。(可能实际应用中还需要配置 Aspose.Words:指定中文字体的路径,以确保 Aspose.Words 能找到并使用这些字体。

  • 编辑 /etc/locale.gen 文件以启用中文 zh_CN.UTF-8 语言环境,并生成该语言环境。

  • 设置了相关的环境变量,使得容器内的默认语言环境为中文。

  • 复制本地的应用程序文件到容器中的 /app 目录。

  • 设置工作目录为 /app

  • 使用默认命令运行 Java 应用程序(需要根据实际的应用程序修改命令)。

3. 构建镜像

Tips:请切换当前命令工作位置到Dockerfile所在的目录。

docker build -t openjdk:17.0.2-jdk-slim-buster_zh .

注意:

如果需要多次执行构建镜像命令以应用修改,需要加上在命令最后加上参数:--no-cache ,否则会出现外部修改不生效的情况。修改后的命令:docker build -t openjdk:17.0.2-jdk-slim-buster_zh . --no-cache

4.测试

最后将自己运行容器的命令中所使用的镜像名称修改为新构建的镜像名称,例如 openjdk:17.0.2-jdk-slim-buster_zh ,使用新构建的镜像重新运行即可。