|
@@ -1,11 +1,58 @@
|
|
|
-FROM eclipse-temurin:17-jdk
|
|
|
|
|
|
|
+# --- 第一阶段:构建阶段 ---
|
|
|
|
|
+FROM registry.cn-chengdu.aliyuncs.com/azysrv/maven:3.9.6-eclipse-temurin-21 AS builder
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
-RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
|
|
|
|
|
|
|
+# 创建并写入阿里云镜像配置到容器的 settings.xml
|
|
|
|
|
+RUN mkdir -p /root/.m2 && \
|
|
|
|
|
+ echo '<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"> \
|
|
|
|
|
+ <mirrors> \
|
|
|
|
|
+ <mirror> \
|
|
|
|
|
+ <id>aliyunmaven</id> \
|
|
|
|
|
+ <mirrorOf>external:*,!jitpack.io</mirrorOf> \
|
|
|
|
|
+ <name>Aliyun Maven</name> \
|
|
|
|
|
+ <url>https://maven.aliyun.com/repository/public</url> \
|
|
|
|
|
+ </mirror> \
|
|
|
|
|
+ </mirrors> \
|
|
|
|
|
+ </settings>' > /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
|
|
|
|
|
|
|
|
-COPY bin/mgr/ /app/
|
|
|
|
|
|
|
+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"
|
|
ENV JAVA_OPTS="-Xms2g -Xmx4g -XX:+UseG1GC"
|
|
|
|
|
|
|
|
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar ops-mgr.jar --spring.config.location=classpath:/application.yml,file:/app/mgr.yml"]
|
|
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar ops-mgr.jar --spring.config.location=classpath:/application.yml,file:/app/mgr.yml"]
|