# 多阶段构建 - 入库服务 FROM maven:3.9-eclipse-temurin-17 AS builder LABEL maintainer="cpte@163.com" LABEL description="CPTE WMS Inbound Service" WORKDIR /app # 复制 pom.xml 并下载依赖(利用 Docker 缓存) COPY cpte-boot-base-core/pom.xml ./cpte-boot-base-core/ COPY cpte-module-system/pom.xml ./cpte-module-system/ COPY cpte-module-system/cpte-system-api/pom.xml ./cpte-module-system/cpte-system-api/ COPY cpte-module-system/cpte-system-api/cpte-system-local-api/pom.xml ./cpte-module-system/cpte-system-api/cpte-system-local-api/ COPY cpte-module-system/cpte-system-biz/pom.xml ./cpte-module-system/cpte-system-biz/ COPY cpte-boot-module/pom.xml ./cpte-boot-module/ COPY cpte-boot-module/cpte-module-wms/pom.xml ./cpte-boot-module/cpte-module-wms/ COPY cpte-wms-service/pom.xml ./cpte-wms-service/ COPY cpte-wms-service/cpte-wms-api/pom.xml ./cpte-wms-service/cpte-wms-api/ COPY cpte-wms-service/cpte-wms-inbound-service/pom.xml ./cpte-wms-service/cpte-wms-inbound-service/ COPY pom.xml ./ # 下载依赖 RUN mvn dependency:go-offline -B # 复制源代码并构建 COPY cpte-boot-base-core/src ./cpte-boot-base-core/src COPY cpte-module-system/cpte-system-api/src ./cpte-module-system/cpte-system-api/src COPY cpte-module-system/cpte-system-api/cpte-system-local-api/src ./cpte-module-system/cpte-system-api/cpte-system-local-api/src COPY cpte-module-system/cpte-system-biz/src ./cpte-module-system/cpte-system-biz/src COPY cpte-boot-module/cpte-module-wms/src ./cpte-boot-module/cpte-module-wms/src COPY cpte-wms-service/cpte-wms-api/src ./cpte-wms-service/cpte-wms-api/src COPY cpte-wms-service/cpte-wms-inbound-service/src ./cpte-wms-service/cpte-wms-inbound-service/src RUN mvn clean package -DskipTests -pl cpte-wms-service/cpte-wms-inbound-service -am -B # 运行阶段 FROM eclipse-temurin:17-jre-alpine LABEL maintainer="cpte@163.com" LABEL description="CPTE WMS Inbound Service Runtime" # 安装必要的工具 RUN apk add --no-cache curl tzdata busybox-extras \ && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone WORKDIR /app # 从构建阶段复制 jar 包 COPY --from=builder /app/cpte-wms-service/cpte-wms-inbound-service/target/*.jar app.jar # 创建数据目录 RUN mkdir -p /data/upload /data/webapp /data/logs # 设置环境变量 ENV JAVA_OPTS="-Xms512m -Xmx1g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs" ENV SPRING_PROFILES_ACTIVE="k8s" ENV TZ="Asia/Shanghai" # 暴露端口 EXPOSE 8080 # 健康检查 HEALTHCHECK --interval=30s --timeout=3s --start-period=60s --retries=3 \ CMD curl -f http://localhost:8080/actuator/health || exit 1 # 启动应用 ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE -jar app.jar"]