2025-07-17 18:30:14 +08:00
|
|
|
|
# —— 第一阶段:Maven 构建 ——
|
2025-07-18 19:43:23 +08:00
|
|
|
|
FROM maven:3.8.6-openjdk-8-slim AS builder
|
2025-07-17 18:30:14 +08:00
|
|
|
|
WORKDIR /workspace
|
2025-07-10 18:30:39 +08:00
|
|
|
|
|
2025-07-18 17:14:24 +08:00
|
|
|
|
# 复制项目级 settings.xml
|
2025-07-17 18:30:14 +08:00
|
|
|
|
COPY .mvn/settings.xml /root/.m2/settings.xml
|
2025-07-10 18:30:39 +08:00
|
|
|
|
|
2025-07-18 17:14:24 +08:00
|
|
|
|
# 预先把外部模块的 JAR 复制进来,并安装到本地仓库
|
|
|
|
|
COPY docs/libs/group-buying-sys-api-1.0-SNAPSHOT.jar /tmp/group-buying-sys-api.jar
|
|
|
|
|
RUN mvn install:install-file \
|
|
|
|
|
-Dfile=/tmp/group-buying-sys-api.jar \
|
|
|
|
|
-DgroupId=edu.whut \
|
|
|
|
|
-DartifactId=group-buying-sys-api \
|
|
|
|
|
-Dversion=1.0-SNAPSHOT \
|
|
|
|
|
-Dpackaging=jar
|
|
|
|
|
|
|
|
|
|
# 1. 拷贝父 POM 及各模块的 pom.xml,加速依赖下载
|
2025-07-17 18:30:14 +08:00
|
|
|
|
COPY pom.xml ./pom.xml
|
|
|
|
|
COPY pay-mall-api/pom.xml ./pay-mall-api/pom.xml
|
|
|
|
|
COPY pay-mall-domain/pom.xml ./pay-mall-domain/pom.xml
|
|
|
|
|
COPY pay-mall-infrastructure/pom.xml ./pay-mall-infrastructure/pom.xml
|
|
|
|
|
COPY pay-mall-trigger/pom.xml ./pay-mall-trigger/pom.xml
|
|
|
|
|
COPY pay-mall-types/pom.xml ./pay-mall-types/pom.xml
|
|
|
|
|
COPY pay-mall-app/pom.xml ./pay-mall-app/pom.xml
|
2025-07-10 18:30:39 +08:00
|
|
|
|
|
2025-07-17 18:30:14 +08:00
|
|
|
|
# 离线下载所有依赖
|
|
|
|
|
RUN mvn dependency:go-offline -B
|
|
|
|
|
|
|
|
|
|
# 2. 拷贝所有源码
|
|
|
|
|
COPY . .
|
|
|
|
|
|
2025-07-18 17:14:24 +08:00
|
|
|
|
# 3. 打包 main 应用模块,跳过测试
|
|
|
|
|
RUN mvn -f pom.xml clean package \
|
2025-07-17 18:30:14 +08:00
|
|
|
|
-pl pay-mall-app -am \
|
|
|
|
|
-DskipTests -B
|
|
|
|
|
|
|
|
|
|
# —— 第二阶段:运行时镜像 ——
|
2025-07-18 18:29:39 +08:00
|
|
|
|
FROM openjdk:8-jdk-slim
|
2025-07-17 18:30:14 +08:00
|
|
|
|
LABEL maintainer="smile"
|
|
|
|
|
|
2025-07-18 17:14:24 +08:00
|
|
|
|
# 设置时区
|
2025-07-17 18:30:14 +08:00
|
|
|
|
ENV TZ=Asia/Shanghai
|
2025-07-10 18:30:39 +08:00
|
|
|
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|
|
|
|
|
2025-07-18 17:14:24 +08:00
|
|
|
|
# 拷贝打包产物
|
|
|
|
|
COPY --from=builder /workspace/pay-mall-app/target/pay-mall-app.jar app.jar
|
2025-07-17 18:30:14 +08:00
|
|
|
|
|
2025-07-18 17:14:24 +08:00
|
|
|
|
# 暴露端口
|
2025-07-17 18:30:14 +08:00
|
|
|
|
EXPOSE 8092
|
2025-07-10 18:30:39 +08:00
|
|
|
|
|
2025-07-18 18:29:39 +08:00
|
|
|
|
ENTRYPOINT ["java", "-jar", "app.jar"]
|