# # 使用官方 Java 8 精简镜像(含JDK,适合运行Spring Boot等Java应用) # FROM mirror.ccs.tencentyun.com/library/openjdk:8-jdk-slim AS runtime # # 配置环境变量(解决中文乱码、时区问题) # ENV LANG=C.UTF-8 \ # TZ=Asia/Shanghai \ # JAVA_OPTS="" # # 创建应用工作目录 # WORKDIR /app # # 复制主应用JAR 和 API JAR # COPY /start/target/start-0.0.1-SNAPSHOT.jar /app/flymoon-email.jar # RUN chmod 755 /app/flymoon-email.jar # # 暴露应用端口(根据实际端口修改) # EXPOSE 4997 4998 # # 默认启动环境sit,可被覆盖,外部使用-e or env SPRING_PROFILES_ACTIVE=xxx覆盖 # ARG RUN_PROFILE=sit-us # ENV SPRING_PROFILES_ACTIVE=${RUN_PROFILE} # # 启动命令(支持外部传入JVM参数,如 -Xms512m -Xmx1024m) # ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app/flymoon-email.jar --spring.profiles.active=${SPRING_PROFILES_ACTIVE}"] # ---- Stage 1: Build with Maven ---- FROM maven:3.9.6-eclipse-temurin-8 AS builder WORKDIR /build # 先仅复制 pom.xml 用于依赖缓存 COPY pom.xml . # 预下载所有依赖,pom 不变就不会重新下载 RUN mvn -B dependency:go-offline # 再复制源码 COPY src ./src # 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-slim AS runtime WORKDIR /app ENV LANG=C.UTF-8 \ TZ=Asia/Shanghai \ JAVA_OPTS="" # 从构建阶段复制 JAR COPY --from=builder /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", "java $JAVA_OPTS -jar /app/app.jar --spring.profiles.active=${SPRING_PROFILES_ACTIVE}"]