Dockerfile.multiarch 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # ============================================
  2. # Build stage with incremental cache support
  3. # 支持多种国内镜像源
  4. # ============================================
  5. # 使用方式:
  6. # docker build -t gateway:latest . # 默认使用阿里云
  7. # docker build --build-arg REGISTRY=hub.c.163.com/library -t gateway:latest . # 网易云
  8. # docker build --build-arg SOURCE=distroless -t gateway:latest . # Distroless
  9. ARG SOURCE=aliyun
  10. ARG REGISTRY=registry.aliyuncs.com/library
  11. # ====== 阿里云源 ======
  12. FROM ${REGISTRY}/maven:3.8-openjdk-8 AS builder-aliyun
  13. ARG BUILD_NUMBER=local
  14. ARG GIT_COMMIT=unknown
  15. ARG MAVEN_OPTS=-Dmaven.wagon.http.ssl.insecure=true
  16. ENV MAVEN_OPTS="${MAVEN_OPTS}"
  17. WORKDIR /build
  18. COPY pom.xml .
  19. COPY shop-recycle-common/ shop-recycle-common/
  20. COPY shop-recycle-gateway/ shop-recycle-gateway/
  21. COPY shop-recycle-order-service/ shop-recycle-order-service/
  22. COPY shop-recycle-payment-service/ shop-recycle-payment-service/
  23. # Build common module first and install to local repository
  24. RUN mvn clean install -pl shop-recycle-common \
  25. -DskipTests -B -q \
  26. -Dmaven.test.skip=true
  27. RUN mvn dependency:go-offline -B -q
  28. COPY shop-recycle-gateway/src shop-recycle-gateway/src
  29. RUN mvn package -DskipTests -B -q \
  30. -pl shop-recycle-gateway \
  31. -am \
  32. -Dmaven.test.skip=true \
  33. -Ddocker.build.number=${BUILD_NUMBER} \
  34. -Dgit.commit=${GIT_COMMIT}
  35. # ====== 取决于SOURCE参数的最终镜像 ======
  36. FROM ${REGISTRY}/openjdk:8-jre-alpine
  37. LABEL maintainer="shop-recycle"
  38. LABEL service="shop-recycle-gateway"
  39. LABEL build.number=${BUILD_NUMBER}
  40. LABEL git.commit=${GIT_COMMIT}
  41. LABEL mirror-source=${SOURCE}
  42. ENV TZ=Asia/Shanghai
  43. ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  44. WORKDIR /app
  45. COPY --from=builder-aliyun /build/shop-recycle-gateway/target/*.jar gateway.jar
  46. EXPOSE 8080
  47. # Alpine中使用wget(比curl轻量)
  48. HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
  49. CMD wget --no-verbose --tries=1 --spider http://localhost:8080/health || exit 1
  50. ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar gateway.jar"]