WIP: 重构Docker构建流程和部署脚本
- 更新Dockerfile为多阶段构建,提升安全性和构建效率 - 重构docker-compose.yml,添加健康检查和网络配置 - 新增Docker镜像构建和推送脚本 - 修复Maven打包配置,移除不必要的配置项 - 添加.dockerignore文件优化构建上下文 - 删除旧的deploy.sh脚本 - 新增JAR部署和回滚脚本 注意:此为开发中版本,请勿部署到生产环境
This commit is contained in:
@@ -1,16 +1,38 @@
|
||||
FROM openjdk:11-jre-slim
|
||||
# ---------- Build stage ----------
|
||||
FROM --platform=$BUILDPLATFORM maven:3.9-eclipse-temurin-11 AS build
|
||||
WORKDIR /workspace
|
||||
|
||||
# 设置工作目录
|
||||
# Cache-friendly: copy POMs first
|
||||
COPY pom.xml .
|
||||
COPY play-admin/pom.xml play-admin/
|
||||
COPY play-common/pom.xml play-common/
|
||||
COPY play-generator/pom.xml play-generator/
|
||||
|
||||
# Warm deps cache
|
||||
RUN --mount=type=cache,target=/root/.m2 mvn -B -DskipTests dependency:go-offline
|
||||
|
||||
# Add sources
|
||||
COPY play-admin/src play-admin/src/
|
||||
COPY play-common/src play-common/src/
|
||||
COPY play-generator/src play-generator/src/
|
||||
|
||||
# Build only app module (and its deps)
|
||||
RUN --mount=type=cache,target=/root/.m2 mvn -pl play-admin -am -B -DskipTests -T 1C clean package
|
||||
|
||||
# ---------- Runtime stage (multi-arch) ----------
|
||||
FROM eclipse-temurin:11-jre AS runtime
|
||||
# non-root
|
||||
RUN groupadd -g 1001 appgroup && useradd -u 1001 -g appgroup -m -s /usr/sbin/nologin appuser
|
||||
WORKDIR /app
|
||||
|
||||
# 只复制应用程序JAR包,不复制lib目录
|
||||
COPY ./*.jar app.jar
|
||||
COPY --from=build /workspace/play-admin/target/*.jar /app/app.jar
|
||||
RUN chown -R appuser:appgroup /app
|
||||
USER appuser
|
||||
|
||||
# 设置环境变量
|
||||
ENV APP_NAME=app.jar
|
||||
ENV JAVA_OPTS="-Xms2g -Xmx2g" \
|
||||
SPRING_PROFILES_ACTIVE="test" \
|
||||
TZ="Asia/Shanghai" \
|
||||
LANG="C.UTF-8"
|
||||
|
||||
# 暴露应用端口
|
||||
EXPOSE 8080
|
||||
|
||||
# 设置启动命令
|
||||
CMD ["sh", "-c", "java -Dloader.path=./lib/ -Xms2g -Xmx2g -jar $APP_NAME --spring.profiles.active=test"]
|
||||
EXPOSE 7002
|
||||
ENTRYPOINT ["sh","-c","exec java $JAVA_OPTS -jar /app/app.jar --spring.profiles.active=${SPRING_PROFILES_ACTIVE}"]
|
||||
|
||||
Reference in New Issue
Block a user