|
|
@@ -0,0 +1,34 @@
|
|
|
+# ============================================
|
|
|
+# 阶段一:构建阶段
|
|
|
+# ============================================
|
|
|
+FROM maven:3.9.11-eclipse-temurin-17 AS builder
|
|
|
+
|
|
|
+WORKDIR /app
|
|
|
+
|
|
|
+# 先只复制 pom.xml,利用 Docker 缓存层加速依赖下载
|
|
|
+COPY pom.xml .
|
|
|
+RUN mvn dependency:go-offline -B
|
|
|
+
|
|
|
+# 复制源码并打包
|
|
|
+COPY src ./src
|
|
|
+RUN mvn clean package -DskipTests -B
|
|
|
+
|
|
|
+# ============================================
|
|
|
+# 阶段二:运行阶段(精简镜像)
|
|
|
+# ============================================
|
|
|
+FROM eclipse-temurin:17-jre-jammy
|
|
|
+
|
|
|
+WORKDIR /app
|
|
|
+
|
|
|
+# 设置时区为上海
|
|
|
+ENV TZ=Asia/Shanghai
|
|
|
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|
|
+
|
|
|
+# 从构建阶段复制 JAR
|
|
|
+COPY --from=builder /app/target/Smart-Review-Backend-2.0.jar app.jar
|
|
|
+
|
|
|
+# 暴露端口
|
|
|
+EXPOSE 8080
|
|
|
+
|
|
|
+# 启动命令,激活 prod 配置
|
|
|
+ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "-Djava.security.egd=file:/dev/./urandom", "app.jar"]
|