71 lines
1.8 KiB
Plaintext
71 lines
1.8 KiB
Plaintext
|
|
# # 使用官方 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}"]
|