# ---- Stage 1: Build with Maven ---- FROM maven:3.8.8-eclipse-temurin-8 AS builder WORKDIR /build # 先仅复制 pom.xml 用于依赖缓存 COPY application/pom.xml application/ COPY domain/pom.xml domain/ COPY infrastructure-cn/pom.xml infrastructure-cn/ COPY infrastructure-us/pom.xml infrastructure-us/ COPY infrastructure/pom.xml infrastructure/ COPY interface/pom.xml interface/ COPY start/pom.xml start/ COPY pom.xml . # 预下载所有依赖,pom 不变就不会重新下载 RUN mvn -B dependency:go-offline # 再复制所有源码 COPY . . # 开始 Maven 构建,配置变量可变,us 或 cn, 默认为 us ARG MAVEN_BUILD_PROFILE=us RUN mvn clean package -Dmaven.test.skip=true -P${MAVEN_BUILD_PROFILE} # ---- Stage 2: Runtime ---- FROM mirror.ccs.tencentyun.com/library/openjdk:8-jdk AS runtime # 创建应用工作目录 WORKDIR /app ENV LANG=C.UTF-8 \ TZ=Asia/Shanghai \ JAVA_OPTS="" # 从构建阶段复制 JAR COPY --from=builder /build/start/target/start-0.0.1-SNAPSHOT.jar /app/flymoon-email.jar EXPOSE 4997 4998 # 运行时配置可变 ARG RUN_PROFILE=sit-us ENV SPRING_PROFILES_ACTIVE=${RUN_PROFILE} ENTRYPOINT ["sh", "-c", "exec java $JAVA_OPTS -jar /app/flymoon-email.jar --spring.profiles.active=${SPRING_PROFILES_ACTIVE}"]