Dockerfile.multiarch 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. RUN mvn dependency:go-offline -B -q
  22. COPY shop-recycle-gateway/src shop-recycle-gateway/src
  23. RUN mvn package -DskipTests -B -q \
  24. -pl shop-recycle-gateway \
  25. -am \
  26. -Dmaven.test.skip=true \
  27. -Ddocker.build.number=${BUILD_NUMBER} \
  28. -Dgit.commit=${GIT_COMMIT}
  29. # ====== 取决于SOURCE参数的最终镜像 ======
  30. FROM ${REGISTRY}/openjdk:8-jre-alpine
  31. LABEL maintainer="shop-recycle"
  32. LABEL service="shop-recycle-gateway"
  33. LABEL build.number=${BUILD_NUMBER}
  34. LABEL git.commit=${GIT_COMMIT}
  35. LABEL mirror-source=${SOURCE}
  36. ENV TZ=Asia/Shanghai
  37. ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
  38. WORKDIR /app
  39. COPY --from=builder-aliyun /build/shop-recycle-gateway/target/*.jar gateway.jar
  40. EXPOSE 8080
  41. # Alpine中使用wget(比curl轻量)
  42. HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
  43. CMD wget --no-verbose --tries=1 --spider http://localhost:8080/health || exit 1
  44. ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar gateway.jar"]