| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- # --- 第一阶段:构建阶段 ---
- 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 '<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
- 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 --spring.config.location=classpath:/application.yml,file:/app/mgr.yml"]
|