# ============================================ # Build stage - 精简版(假设common已预先安装到本地仓库) # ============================================ FROM maven:3.8-openjdk-8 AS builder ARG BUILD_NUMBER=local ARG GIT_COMMIT=unknown ARG MAVEN_OPTS=-Dmaven.wagon.http.ssl.insecure=true ENV MAVEN_OPTS="${MAVEN_OPTS}" WORKDIR /build # 只复制 pom.xml 和源代码(common 从本地仓库获取) COPY pom.xml . COPY shop-recycle-common/pom.xml ./shop-recycle-common/pom.xml COPY shop-recycle-order-service/ ./shop-recycle-order-service/ COPY shop-recycle-gateway/pom.xml ./shop-recycle-gateway/ COPY shop-recycle-payment-service/pom.xml ./shop-recycle-payment-service/ # 仅下载依赖(common 会从本地仓库的缓存获取) RUN mvn dependency:go-offline -B -q \ -pl shop-recycle-order-service \ -am # 构建服务(跳过其他模块,只构建 order-service) RUN mvn package -DskipTests -B -q \ -pl shop-recycle-order-service \ -Dmaven.test.skip=true \ -Ddocker.build.number=${BUILD_NUMBER} \ -Dgit.commit=${GIT_COMMIT} # ============================================ # Runtime stage # ============================================ FROM openjdk:8-jre-alpine LABEL maintainer="shop-recycle" LABEL service="shop-recycle-order-service" LABEL build.number=${BUILD_NUMBER} LABEL git.commit=${GIT_COMMIT} ENV TZ=Asia/Shanghai ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200" WORKDIR /app COPY --from=builder /build/shop-recycle-order-service/target/*.jar order-service.jar EXPOSE 8081 HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:8081/health || exit 1 ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar order-service.jar"]