Dockerfile制作JDK + Maven + 中文环境 + 时区 + 无限制加密策略 + 国内源加速构建

半兽人 发表于: 2025-11-10   最后更新时间: 2025-11-10 11:49:56  
{{totalSubscript}} 订阅, 63 游览

JDK + Maven + 中文环境 + 时区 + 无限制加密策略 + 国内源加速构建。

Dockerfile:带 Maven、国内源、JCE 无限制策略

# ------------------------------------------------------------
# 基础镜像:Ubuntu 25.10(amd64 架构)
# ------------------------------------------------------------
FROM --platform=linux/amd64 ubuntu:25.10

# ------------------------------------------------------------
# 安装必要系统工具:
#   - ca-certificates:根证书(用于 HTTPS)
#   - tar:解压工具
#   - tzdata:时区配置
#   - locales:语言包支持
#   - curl:下载 Maven 包
# ------------------------------------------------------------
RUN apt-get update && apt-get install -y --no-install-recommends \
        ca-certificates \
        tar \
        tzdata \
        locales \
        curl \
    # 设置时区为上海(Asia/Shanghai)
    && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone \
    && dpkg-reconfigure -f noninteractive tzdata \
    # 设置中文 UTF-8 语言环境
    && locale-gen zh_CN.UTF-8 \
    && update-locale LANG=zh_CN.UTF-8 \
    # 清理缓存,减小镜像体积
    && rm -rf /var/lib/apt/lists/*

# ------------------------------------------------------------
# 设置环境变量(全局中文环境 + JVM 默认 UTF-8)
# ------------------------------------------------------------
ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN:zh
ENV LC_ALL=zh_CN.UTF-8
ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN"

# ------------------------------------------------------------
# 设置默认工作目录
# ------------------------------------------------------------
WORKDIR /usr/local

# ------------------------------------------------------------
# 拷贝本地 JDK 安装包(请与 Dockerfile 放在同一目录)
# ------------------------------------------------------------
COPY jdk-8u471-linux-x64.tar.gz /tmp/

# ------------------------------------------------------------
# 解压 JDK 并配置环境变量
# ------------------------------------------------------------
RUN tar -xzf /tmp/jdk-8u471-linux-x64.tar.gz -C /usr/local/ \
    && mv /usr/local/jdk1.8.0_471 /usr/local/jdk \
    && rm -rf /tmp/*

ENV JAVA_HOME=/usr/local/jdk
ENV PATH=$JAVA_HOME/bin:$PATH

# ------------------------------------------------------------
# 拷贝 JCE 无限制加密策略(需在构建上下文中提供 UnlimitedJCEPolicyJDK8 文件夹)
# ------------------------------------------------------------
COPY UnlimitedJCEPolicyJDK8/ /tmp/UnlimitedJCEPolicyJDK8/
RUN cp -f /tmp/UnlimitedJCEPolicyJDK8/local_policy.jar $JAVA_HOME/jre/lib/security/ \
    && cp -f /tmp/UnlimitedJCEPolicyJDK8/US_export_policy.jar $JAVA_HOME/jre/lib/security/ \
    && rm -rf /tmp/UnlimitedJCEPolicyJDK8

# ------------------------------------------------------------
# 安装 Maven(使用官方二进制包)
# ------------------------------------------------------------
ENV MAVEN_VERSION=3.9.9
RUN curl -fsSL https://downloads.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz -o /tmp/maven.tar.gz \
    && tar -xzf /tmp/maven.tar.gz -C /usr/local/ \
    && mv /usr/local/apache-maven-${MAVEN_VERSION} /usr/local/maven \
    && rm -f /tmp/maven.tar.gz

ENV MAVEN_HOME=/usr/local/maven
ENV PATH=$MAVEN_HOME/bin:$PATH

# ------------------------------------------------------------
# 拷贝 Maven settings.xml(含国内源配置)
# ------------------------------------------------------------
COPY settings.xml $MAVEN_HOME/conf/settings.xml

# ------------------------------------------------------------
# 验证 Java 与 Maven 安装
# ------------------------------------------------------------
RUN java -version && javac -version && mvn -version

# ------------------------------------------------------------
# 默认工作目录
# ------------------------------------------------------------
WORKDIR /workspace

# ------------------------------------------------------------
# 启动容器后默认进入 bash
# ------------------------------------------------------------
CMD ["bash"]

构建前的目录结构示例

请确保 Dockerfile 同级目录包含以下文件:

.
├── Dockerfile
├── jdk-8u471-linux-x64.tar.gz
├── UnlimitedJCEPolicyJDK8/
│   ├── local_policy.jar
│   ├── US_export_policy.jar
└── settings.xml

国内 Maven 源示例(settings.xml)

你可以放一个常用的 Maven 国内镜像配置:

<settings>
  <mirrors>
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>Aliyun Maven</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
  </mirrors>
</settings>

也可以用三套高可用国内镜像源(阿里云 + 清华 + 华为云),还自动保留中央仓库和私服扩展位。

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
                              https://maven.apache.org/xsd/settings-1.0.0.xsd">

  <!-- ============================================================
       Maven 全局配置文件
       说明:
         1. 内置多源镜像(Aliyun、清华、华为云)
         2. 可同时兼容公司私服
         3. 默认使用 UTF-8
       ============================================================ -->

  <!-- 全局属性配置 -->
  <profiles>
    <profile>
      <id>china-mirrors</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>

      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
      </properties>

      <!-- 镜像源配置 -->
      <repositories>
        <!-- 阿里云公共仓库 -->
        <repository>
          <id>aliyunmaven</id>
          <name>Aliyun Maven</name>
          <url>https://maven.aliyun.com/repository/public</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>

        <!-- 清华大学开源镜像站 -->
        <repository>
          <id>tuna</id>
          <name>TUNA Maven Mirror</name>
          <url>https://mirrors.tuna.tsinghua.edu.cn/maven</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>

        <!-- 华为云 Maven 仓库 -->
        <repository>
          <id>huaweicloud</id>
          <name>Huawei Cloud Maven</name>
          <url>https://repo.huaweicloud.com/repository/maven/</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>

        <!-- 官方中央仓库(作为兜底) -->
        <repository>
          <id>central</id>
          <name>Maven Central</name>
          <url>https://repo1.maven.org/maven2/</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>false</enabled></snapshots>
        </repository>
      </repositories>

      <!-- 插件仓库配置 -->
      <pluginRepositories>
        <pluginRepository>
          <id>aliyunmaven-plugin</id>
          <name>Aliyun Maven Plugin</name>
          <url>https://maven.aliyun.com/repository/public</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <!-- 激活默认 profile -->
  <activeProfiles>
    <activeProfile>china-mirrors</activeProfile>
  </activeProfiles>

  <!-- ============================================================
       如果有公司私服,可以在这里加 mirrorOf="*" 的私服地址:
       <mirrors>
         <mirror>
           <id>private-nexus</id>
           <mirrorOf>*</mirrorOf>
           <name>Company Private Nexus</name>
           <url>http://nexus.company.com/repository/maven-public/</url>
         </mirror>
       </mirrors>
       ============================================================ -->
</settings>

构建命令(Mac 架构编译 amd64)

docker buildx build --platform linux/amd64 -t myjdk-maven:8u471 .

构建后特性

功能 说明
√ 中文环境 默认 UTF-8,日志不再乱码
√ 上海时区 JVM 与系统时间一致
√ JCE 无限策略 AES-256、RSA-2048 可正常使用
√ Maven 内置 含国内镜像源
√ 通用基础镜像 可直接运行或二次构建 Spring Boot 应用
更新于 2025-11-10
在线,3小时前登录

查看Dockerfile更多相关的文章或提一个关于Dockerfile的问题,也可以与我们一起分享文章