# 构建阶段:Maven + JDK 17 编译,生成薄 jar 及依赖 FROM maven:3.9-eclipse-temurin-17-alpine AS builder WORKDIR /app # 优先复制 pom.xml 利用 Docker 层缓存(依赖不变时跳过 go-offline) COPY pom.xml . RUN mvn dependency:go-offline -q COPY src ./src RUN mvn clean package -DskipTests -q # 运行阶段:仅含 JRE 的精简镜像 FROM eclipse-temurin:17-jre-alpine WORKDIR /app # 复制部署结构:bin/ libs/ etc/ COPY --from=builder /app/src/main/scripts/start.sh bin/start.sh COPY --from=builder /app/target/libs/ libs/ COPY --from=builder /app/src/main/resources/application.yml etc/application.yml COPY --from=builder /app/src/main/resources/logback.xml etc/logback.xml RUN mkdir -p logs && chmod +x bin/start.sh EXPOSE 8080 # start.sh 检测到 /.dockerenv 后以 exec 前台方式运行 ENTRYPOINT ["bin/start.sh"]