# ============================================================ # 碳信网 - 统一后端构建镜像 # 使用方式: docker run -e SERVICE_NAME=gateway txw-all:latest # ============================================================ # Stage 1: Build FROM maven:3.6.3-openjdk-8 AS builder WORKDIR /build # ------------------------------------------- # Step 1: 复制所有 pom.xml 和 settings # ------------------------------------------- # 公共模块 COPY txw-common/pom.xml txw-common/pom.xml COPY txw-common/src txw-common/src # Gateway COPY txw-gateway/pom.xml gateway/pom.xml COPY txw-gateway/devops/settings-offline.xml gateway/settings.xml COPY txw-gateway/src gateway/src # SSO COPY txw-sso/pom.xml sso/pom.xml COPY txw-sso/devops/settings-offline.xml sso/settings.xml COPY txw-sso/txw-sso-service-api/pom.xml sso/txw-sso-service-api/pom.xml COPY txw-sso/txw-sso-service-api/src sso/txw-sso-service-api/src COPY txw-sso/txw-sso-service-biz/pom.xml sso/txw-sso-service-biz/pom.xml COPY txw-sso/txw-sso-service-biz/src sso/txw-sso-service-biz/src # MHZC COPY txw-mhzc/pom.xml mhzc/pom.xml COPY txw-mhzc/devops/settings-offline.xml mhzc/settings.xml COPY txw-mhzc/txw-mhzc-service-api/pom.xml mhzc/txw-mhzc-service-api/pom.xml COPY txw-mhzc/txw-mhzc-service-api/src mhzc/txw-mhzc-service-api/src COPY txw-mhzc/txw-mhzc-service-biz/pom.xml mhzc/txw-mhzc-service-biz/pom.xml COPY txw-mhzc/txw-mhzc-service-biz/src mhzc/txw-mhzc-service-biz/src # YYGL COPY txw-yygl/pom.xml yygl/pom.xml COPY txw-yygl/settings.xml yygl/settings.xml COPY txw-yygl/txw-yygl-service-api/pom.xml yygl/txw-yygl-service-api/pom.xml COPY txw-yygl/txw-yygl-service-api/src yygl/txw-yygl-service-api/src COPY txw-yygl/txw-yygl-service-biz/pom.xml yygl/txw-yygl-service-biz/pom.xml COPY txw-yygl/txw-yygl-service-biz/src yygl/txw-yygl-service-biz/src # ------------------------------------------- # Step 2: 复制 Maven 本地仓库(离线构建) # ------------------------------------------- COPY script/.m2/repository /root/.m2/repository # ------------------------------------------- # Step 3: 按依赖顺序构建 # ------------------------------------------- # 3.1 构建公共模块 WORKDIR /build/txw-common RUN mvn clean install -DskipTests -s ../gateway/settings.xml -o || mvn clean install -DskipTests # 3.2 构建 API 模块 WORKDIR /build/mhzc/txw-mhzc-service-api RUN mvn clean install -DskipTests -s ../../gateway/settings.xml -o || mvn clean install -DskipTests WORKDIR /build/sso/txw-sso-service-api RUN mvn clean install -DskipTests -s ../../gateway/settings.xml -o || mvn clean install -DskipTests WORKDIR /build/yygl/txw-yygl-service-api RUN mvn clean install -DskipTests -s ../../gateway/settings.xml -o || mvn clean install -DskipTests # 3.3 构建 BIZ 模块 WORKDIR /build/mhzc/txw-mhzc-service-biz RUN mvn clean package -DskipTests -s ../../gateway/settings.xml -o || mvn clean package -DskipTests WORKDIR /build/sso/txw-sso-service-biz RUN mvn clean package -DskipTests -s ../../gateway/settings.xml -o || mvn clean package -DskipTests WORKDIR /build/yygl/txw-yygl-service-biz RUN mvn clean package -DskipTests -s ../../gateway/settings.xml -o || mvn clean package -DskipTests # 3.4 构建 Gateway WORKDIR /build/gateway RUN mvn clean package -DskipTests -s settings.xml -o || mvn clean package -DskipTests # Stage 2: Package FROM eclipse-temurin:8-jre WORKDIR /app # 安装字体(用于验证码 Captcha) RUN apt-get update && apt-get install -y \ fonts-noto-cjk \ fontconfig \ && fc-cache -f -v \ && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* COPY devops/start.sh /app/start.sh RUN chmod +x /app/start.sh # 复制所有构建产物 COPY --from=builder /build/gateway/target/springboot.jar /app/gateway.jar COPY --from=builder /build/sso/txw-sso-service-biz/target/txw-sso-service-biz.jar /app/sso.jar COPY --from=builder /build/mhzc/txw-mhzc-service-biz/target/txw-mhzc-service-biz.jar /app/mhzc.jar COPY --from=builder /build/yygl/txw-yygl-service-biz/target/txw-yygl-service-biz.jar /app/yygl.jar # 清理构建缓存 RUN rm -rf /root/.m2 /root/.mvn # 环境变量:指定启动的服务名 ENV SERVICE_NAME=gateway # 激活正式环境 profile ENV SPRING_PROFILES_ACTIVE=prod EXPOSE 9300 9301 9302 9303 20010 ENTRYPOINT ["/app/start.sh"]