From d231180bff7cac248c3b75ccfc3d91c9f17feeb6 Mon Sep 17 00:00:00 2001 From: wh Date: Thu, 9 Apr 2026 19:39:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(deploy):=20Dockerfile=20=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=A4=9A=E9=98=B6=E6=AE=B5=E6=9E=84=E5=BB=BA=EF=BC=88=E8=96=84?= =?UTF-8?q?=20jar=20+=20start.sh=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index c8aa788..8fa3eb2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,27 @@ -# Build stage: uses Maven + JDK 17 (Alpine) to compile and package the application. +# 构建阶段:Maven + JDK 17 编译,生成薄 jar 及依赖 FROM maven:3.9-eclipse-temurin-17-alpine AS builder WORKDIR /app -# Copy pom.xml first to leverage Docker layer caching for dependency downloads. +# 优先复制 pom.xml 利用 Docker 层缓存(依赖不变时跳过 go-offline) COPY pom.xml . RUN mvn dependency:go-offline -q -# Copy source and build the fat JAR, skipping tests. COPY src ./src RUN mvn clean package -DskipTests -q -# Runtime stage: slim JRE-only image for a smaller production footprint. +# 运行阶段:仅含 JRE 的精简镜像 FROM eclipse-temurin:17-jre-alpine WORKDIR /app -COPY --from=builder /app/target/*.jar app.jar + +# 复制部署结构: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 -ENTRYPOINT ["java", "-jar", "app.jar"] + +# start.sh 检测到 /.dockerenv 后以 exec 前台方式运行 +ENTRYPOINT ["bin/start.sh"]