# --- 第一阶段:构建阶段 --- FROM registry.cn-chengdu.aliyuncs.com/azysrv/maven:3.9.6-eclipse-temurin-21 AS builder WORKDIR /app # 创建并写入阿里云镜像配置到容器的 settings.xml RUN mkdir -p /root/.m2 && \ echo ' \ \ \ aliyunmaven \ external:*,!jitpack.io \ Aliyun Maven \ https://maven.aliyun.com/repository/public \ \ \ ' > /root/.m2/settings.xml # 1. 复制所有 pom.xml COPY pom.xml . COPY common/pom.xml common/ COPY agent/pom.xml agent/ COPY mgr/pom.xml mgr/ # 2. 【关键】利用 go-offline 提前下载并缓存所有依赖 # 这一步会根据上面的 pom.xml 下载依赖。只要 pom 不变,这一层永远使用缓存 #RUN mvn dependency:go-offline -B RUN mvn clean compile -DskipTests # 3. 复制源代码(此时代码变动,只会触发从这里开始的层,前面的依赖层已缓存) COPY common/ common/ COPY mgr/ mgr/ COPY bin/mgr bin/mgr # 4. 执行构建 RUN mvn clean install -DskipTests -pl common -am RUN mvn clean package -DskipTests -pl mgr -am # --- 第二阶段:运行阶段 --- FROM registry.cn-chengdu.aliyuncs.com/azysrv/eclipse-temurin:21-jre-alpine WORKDIR /app # 从构建阶段复制打包好的 JAR # 假设你的打包命名是 mgr-1.0-SNAPSHOT.jar,请根据实际情况调整 COPY --from=builder /app/bin/mgr /app # 暴露端口(根据 mgr 实际端口修改) EXPOSE 4030 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone # 启动命令 ENV JAVA_OPTS="-Xms2g -Xmx4g -XX:+UseG1GC" ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar ops-mgr.jar"]