# ============================================ # Demo Cloud 微服务 — 多阶段构建 # Stage 1: Maven 编译全项目(SpringCloud profile) # Stage 2: JRE 运行 # ============================================ # ---- Stage 1: 编译 ---- FROM maven:3.9-eclipse-temurin-17 AS builder WORKDIR /build # 先复制 pom.xml,利用 Docker 缓存加速依赖下载 COPY pom.xml ./ COPY ghb-base-core/pom.xml ghb-base-core/ COPY ghb-module-system/pom.xml ghb-module-system/ COPY ghb-module-system/ghb-system-api/pom.xml ghb-module-system/ghb-system-api/ COPY ghb-module-system/ghb-system-biz/pom.xml ghb-module-system/ghb-system-biz/ COPY ghb-module-system/ghb-system-start/pom.xml ghb-module-system/ghb-system-start/ COPY ghb-module-business/pom.xml ghb-module-business/ COPY ghb-server-cloud/pom.xml ghb-server-cloud/ COPY test-server-cloud/test-cloud-gateway/pom.xml test-server-cloud/test-cloud-gateway/ COPY test-server-cloud/test-system-cloud-start/pom.xml test-server-cloud/test-system-cloud-start/ COPY ghb-server-cloud/ghb-demo-cloud-start/pom.xml ghb-server-cloud/ghb-demo-cloud-start/ COPY test-server-cloud/test-cloud-nacos/pom.xml test-server-cloud/test-cloud-nacos/ # 下载依赖(pom 不变时缓存) RUN mvn dependency:go-offline -B -P SpringCloud,dev || true # 复制全部源码 COPY . . # 编译全项目(SpringCloud profile,跳过测试) RUN mvn package -P SpringCloud,dev -Dmaven.test.skip=true -T 1C # ---- Stage 2: 运行 ---- FROM eclipse-temurin:17-jre LABEL maintainer="ghb-base deploy" ENV TZ=Asia/Shanghai RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime WORKDIR /app # 从编译阶段复制 demo-cloud jar COPY --from=builder /build/ghb-server-cloud/ghb-demo-cloud-start/target/*.jar app.jar EXPOSE 7002 ENV JAVA_OPTS="-Xms256m -Xmx512m" ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]