# —— 第一阶段:Maven 构建 —— FROM maven:3.8.6-openjdk-8-slim AS builder WORKDIR /workspace # 复制项目级 settings.xml COPY .mvn/settings.xml /root/.m2/settings.xml # 预先把外部模块的 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,加速依赖下载 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 # 离线下载所有依赖 RUN mvn dependency:go-offline -B # 2. 拷贝所有源码 COPY . . # 3. 打包 main 应用模块,跳过测试 RUN mvn -f pom.xml clean package \ -pl pay-mall-app -am \ -DskipTests -B # —— 第二阶段:运行时镜像 —— FROM openjdk:8-jdk-slim LABEL maintainer="smile" # 设置时区 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 拷贝打包产物 COPY --from=builder /workspace/pay-mall-app/target/pay-mall-app.jar app.jar # 暴露端口 EXPOSE 8092 ENTRYPOINT ["java", "-jar", "app.jar"]