46 lines
1.2 KiB
Plaintext
46 lines
1.2 KiB
Plaintext
# ---- 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", "java $JAVA_OPTS -jar /app/flymoon-email.jar --spring.profiles.active=${SPRING_PROFILES_ACTIVE}"]
|