Procházet zdrojové kódy

fix: install shop-recycle-common parent pom before dependency resolution

修复 Docker 构建中的 Maven 依赖解析问题:
- 问题:shop-recycle-common 的 parent pom (spring-cloud-log-demo) 没有被安装到本地仓库
- 解决:在 mvn clean install -pl shop-recycle-common -am 之前,先运行 mvn clean install 安装 parent
- 确保依赖解析时能正确找到 parent pom,避免错误
Builder před 2 měsíci
rodič
revize
c86a6a2bbc
1 změnil soubory, kde provedl 53 přidání a 55 odebrání
  1. 53 55
      shop-recycle-gateway/Dockerfile.optimized

+ 53 - 55
shop-recycle-gateway/Dockerfile.optimized

@@ -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"]