# ====================== 构建阶段 ====================== 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"]