# ============================================ # Build stage with incremental cache support # 支持多种国内镜像源 # ============================================ # 使用方式: # docker build -t gateway:latest . # 默认使用阿里云 # docker build --build-arg REGISTRY=hub.c.163.com/library -t gateway:latest . # 网易云 # docker build --build-arg SOURCE=distroless -t gateway:latest . # Distroless ARG SOURCE=aliyun ARG REGISTRY=registry.aliyuncs.com/library # ====== 阿里云源 ====== FROM ${REGISTRY}/maven:3.8-openjdk-8 AS builder-aliyun ARG BUILD_NUMBER=local ARG GIT_COMMIT=unknown ARG MAVEN_OPTS=-Dmaven.wagon.http.ssl.insecure=true ENV MAVEN_OPTS="${MAVEN_OPTS}" WORKDIR /build COPY pom.xml . COPY shop-recycle-common/ shop-recycle-common/ COPY shop-recycle-gateway/ shop-recycle-gateway/ COPY shop-recycle-order-service/ shop-recycle-order-service/ COPY shop-recycle-payment-service/ shop-recycle-payment-service/ # Build common module first and install to local repository RUN mvn clean install -pl shop-recycle-common \ -DskipTests -B -q \ -Dmaven.test.skip=true RUN mvn dependency:go-offline -B -q COPY shop-recycle-gateway/src shop-recycle-gateway/src RUN mvn package -DskipTests -B -q \ -pl shop-recycle-gateway \ -am \ -Dmaven.test.skip=true \ -Ddocker.build.number=${BUILD_NUMBER} \ -Dgit.commit=${GIT_COMMIT} # ====== 取决于SOURCE参数的最终镜像 ====== FROM ${REGISTRY}/openjdk:8-jre-alpine LABEL maintainer="shop-recycle" LABEL service="shop-recycle-gateway" LABEL build.number=${BUILD_NUMBER} LABEL git.commit=${GIT_COMMIT} LABEL mirror-source=${SOURCE} ENV TZ=Asia/Shanghai ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200" WORKDIR /app COPY --from=builder-aliyun /build/shop-recycle-gateway/target/*.jar gateway.jar EXPOSE 8080 # Alpine中使用wget(比curl轻量) HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:8080/health || exit 1 ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar gateway.jar"]