diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..79f1739 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,50 @@ +# ====================== 构建阶段 ====================== +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"]