|
|
@@ -1,55 +1,53 @@
|
|
|
-# ============================================
|
|
|
-# 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-gateway/ ./shop-recycle-gateway/
|
|
|
-COPY shop-recycle-order-service/pom.xml ./shop-recycle-order-service/
|
|
|
-COPY shop-recycle-payment-service/pom.xml ./shop-recycle-payment-service/
|
|
|
-
|
|
|
-# 仅下载依赖(common 会从本地仓库的缓存获取)
|
|
|
-RUN mvn dependency:go-offline -B -q \
|
|
|
- -pl shop-recycle-gateway \
|
|
|
- -am
|
|
|
-
|
|
|
-# 构建服务(跳过其他模块,只构建 gateway)
|
|
|
-RUN mvn package -DskipTests -B -q \
|
|
|
- -pl shop-recycle-gateway \
|
|
|
- -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-gateway"
|
|
|
-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-gateway/target/*.jar gateway.jar
|
|
|
-
|
|
|
-EXPOSE 8080
|
|
|
-
|
|
|
-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"]
|
|
|
+# ============================================
|
|
|
+# Build stage - 修复版本(先构建内部依赖)
|
|
|
+# ============================================
|
|
|
+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 和所有源代码模块
|
|
|
+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
|
|
|
+
|
|
|
+# 关键修复:第一步先安装 parent pom 到本地仓库
|
|
|
+# 执行在根目录的 pom,这样会安装 parent(spring-cloud-log-demo)
|
|
|
+RUN mvn clean install -DskipTests -B -q
|
|
|
+
|
|
|
+# 第二步:下载 gateway 的所有依赖
|
|
|
+RUN mvn dependency:go-offline -B -q \
|
|
|
+ -pl shop-recycle-gateway \
|
|
|
+ -am
|
|
|
+
|
|
|
+# 第三步:构建 gateway 服务
|
|
|
+RUN mvn package -DskipTests -B -q -pl shop-recycle-gateway
|
|
|
+
|
|
|
+# ============================================
|
|
|
+# Runtime stage
|
|
|
+# ============================================
|
|
|
+FROM openjdk:8-jre-alpine
|
|
|
+
|
|
|
+LABEL maintainer="shop-recycle"
|
|
|
+LABEL service="shop-recycle-gateway"
|
|
|
+
|
|
|
+ENV TZ=Asia/Shanghai
|
|
|
+ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
|
|
|
+
|
|
|
+WORKDIR /app
|
|
|
+
|
|
|
+COPY --from=builder /build/shop-recycle-gateway/target/*.jar app.jar
|
|
|
+
|
|
|
+EXPOSE 8080
|
|
|
+
|
|
|
+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", "exec java ${JAVA_OPTS} -jar app.jar"]
|