Dockerfile.optimized 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # ============================================
  2. # Build stage - 构建支付服务
  3. # ============================================
  4. FROM maven:3.8-openjdk-8 AS builder
  5. ARG BUILD_NUMBER=local
  6. ARG GIT_COMMIT=unknown
  7. ARG MAVEN_OPTS=-Dmaven.wagon.http.ssl.insecure=true
  8. ENV MAVEN_OPTS="${MAVEN_OPTS}"
  9. WORKDIR /build
  10. # 复制聚合 pom 和所有源代码模块
  11. COPY pom.xml .
  12. COPY shop-recycle-common ./shop-recycle-common
  13. COPY shop-recycle-order-service/pom.xml ./shop-recycle-order-service/
  14. COPY shop-recycle-gateway/pom.xml ./shop-recycle-gateway/
  15. COPY shop-recycle-payment-service/ ./shop-recycle-payment-service/
  16. # 第一步:先安装所有模块到本地仓库(包括 common)
  17. RUN mvn clean install -DskipTests -B -q
  18. # 第二步:下载 payment-service 的所有依赖
  19. RUN mvn dependency:go-offline -B -q \
  20. -pl shop-recycle-payment-service \
  21. -am
  22. # 第三步:构建 payment-service
  23. RUN mvn package -DskipTests -B -q \
  24. -pl shop-recycle-payment-service
  25. # ============================================
  26. # Runtime stage
  27. # ============================================
  28. FROM openjdk:8-jre-alpine
  29. # 在 runtime stage 中重新声明 ARG(这样才能在 LABEL 中使用)
  30. ARG BUILD_NUMBER=local
  31. ARG GIT_COMMIT=unknown
  32. LABEL maintainer="shop-recycle"
  33. LABEL service="shop-recycle-payment-service"
  34. LABEL build.number="${BUILD_NUMBER}"
  35. LABEL git.commit="${GIT_COMMIT}"
  36. ENV TZ=Asia/Shanghai
  37. ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  38. WORKDIR /app
  39. COPY --from=builder /build/shop-recycle-payment-service/target/*.jar payment-service.jar
  40. EXPOSE 8082
  41. HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
  42. CMD wget --no-verbose --tries=1 --spider http://localhost:8082/health ; exit 1
  43. ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar payment-service.jar"]