CMVR-IOT/Dockerfile
lixiaolong 6be70e78c8 feat(build): 添加 Dockerfile 配置支持容器化部署
- 配置 Maven 多模块项目构建环境
- 设置多阶段构建优化镜像大小
- 添加 JAR 包复制和清理逻辑
- 配置 Java 运行时参数和 GC 选项
- 设置开发环境默认配置文件
- 实现可执行 JAR 文件重命名机制
2026-05-16 15:52:56 +08:00

51 lines
1.8 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ====================== 构建阶段 ======================
FROM maven:3.9.9-eclipse-temurin-8 AS builder
WORKDIR /app
# 缓存pom
COPY pom.xml .
COPY cmvr-iot-admin/pom.xml cmvr-iot-admin/
COPY cmvr-iot-framework/pom.xml cmvr-iot-framework/
COPY cmvr-iot-system/pom.xml cmvr-iot-system/
COPY cmvr-iot-quartz/pom.xml cmvr-iot-quartz/
COPY cmvr-iot-generator/pom.xml cmvr-iot-generator/
COPY cmvr-iot-common/pom.xml cmvr-iot-common/
COPY cmvr-iot-device/pom.xml cmvr-iot-device/
COPY cmvr-iot-test/pom.xml cmvr-iot-test/
COPY cmvr-iot-api/pom.xml cmvr-iot-api/
COPY cmvr-iot-vi/pom.xml cmvr-iot-vi/
COPY cmvr-iot-ti/pom.xml cmvr-iot-ti/
COPY cmvr-iot-evaluation/pom.xml cmvr-iot-evaluation/
COPY cmvr-iot-api/cmvr-iot-llm/pom.xml cmvr-iot-api/cmvr-iot-llm/
COPY cmvr-iot-api/cmvr-iot-edge/pom.xml cmvr-iot-api/cmvr-iot-edge/
COPY cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/pom.xml cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-client/
COPY cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/pom.xml cmvr-iot-api/cmvr-iot-edge/cmvr-iot-grpc-lib/
RUN mvn dependency:go-offline -B --no-transfer-progress
COPY . .
RUN mvn clean package -DskipTests -pl cmvr-iot-admin -am --no-transfer-progress
# ====================== 运行阶段 ======================
FROM openjdk:8-jdk-alpine
WORKDIR /app
# -------------------------- 【唯一正确写法】 --------------------------
# 1. 先把所有jar复制进来
COPY --from=builder /app/cmvr-iot-admin/target/*.jar ./
# 2. 自动删除不能运行的小jar只保留可执行jar
RUN find . -name "*.jar" -type f -size -20000k -delete
# 3. 重命名为app.jar
RUN mv *.jar app.jar
ENTRYPOINT ["java", "-jar", \
"-Dspring.profiles.active=dev", \
"-Djava.security.egd=file:/dev/./urandom", \
"-XX:+UseG1GC", \
"-Xms512m", "-Xmx1024m", \
"app.jar"]