117 lines
4.2 KiB
Docker
117 lines
4.2 KiB
Docker
# ============================================================
|
||
# 碳信网 - 统一后端构建镜像
|
||
# 使用方式: 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"] |