Dockerfile 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. ########################## Maven 构建 ##########################
  2. FROM maven:3.9.10-eclipse-temurin-8-noble AS aegis-builder
  3. # 设置工作目录
  4. WORKDIR /app
  5. # 复制 Maven 配置文件
  6. COPY ./deployment/maven/settings.xml /root/.m2/settings.xml
  7. # 复制项目文件
  8. COPY ./pom.xml pom.xml
  9. COPY ./aegis-framework aegis-framework/
  10. COPY ./aegis-common aegis-common/
  11. COPY ./aegis-system aegis-system/
  12. COPY ./aegis-quartz aegis-quartz/
  13. COPY ./aegis-admin aegis-admin/
  14. COPY ./aegis-emergency aegis-emergency/
  15. COPY ./aegis-notification aegis-notification/
  16. COPY ./aegis-file aegis-file/
  17. COPY ./aegis-resource aegis-resource/
  18. COPY ./aegis-knowledge aegis-knowledge/
  19. COPY ./aegis-case aegis-case/
  20. COPY ./aegis-camera aegis-camera/
  21. # 构建项目
  22. RUN mvn clean package -DskipTests
  23. ######################### 应急指挥服务镜像 #########################
  24. FROM eclipse-temurin:8-jre-noble AS aegis-admin
  25. # 应用启动参数
  26. ENV JVM_XMS=512
  27. ENV JVM_XMX=1024
  28. ENV SERVER_PORT=8080
  29. ENV SPRING_PROFILE=druid
  30. # 设置工作目录
  31. WORKDIR /app
  32. # 复制构建好的 JAR 文件
  33. COPY --from=aegis-builder /app/aegis-admin/target/aegis-admin.jar /app/aegis-admin.jar
  34. # 启动应用
  35. CMD java \
  36. -Xms${JVM_XMS}m \
  37. -Xmx${JVM_XMX}m \
  38. -Duser.timezone=GMT+8 \
  39. -Dserver.port=${SERVER_PORT} \
  40. -Dspring.profiles.active=${SPRING_PROFILE} \
  41. -jar /app/aegis-admin.jar
  42. ######################### 应急指挥前端构建 #########################
  43. FROM node:14.19.1-bullseye AS aegis-ui-builder
  44. # 设置镜像源
  45. RUN npm config set registry https://registry.npmmirror.com/
  46. # 安装构建依赖 (Python + g++ + make)
  47. RUN apt-get update && apt-get install -y \
  48. python3 \
  49. make \
  50. g++ \
  51. && rm -rf /var/lib/apt/lists/*
  52. # 设置工作目录
  53. WORKDIR /app
  54. # 复制依赖文件
  55. COPY ./aegis-ui/package.json ./package.json
  56. # 安装依赖
  57. RUN npm install
  58. # 复制项目文件
  59. COPY ./aegis-ui .
  60. # 构建前端
  61. RUN npm run build:prod
  62. ######################### 应急指挥前端镜像 #########################
  63. FROM nginx:1.29.0-alpine3.22 AS aegis-ui
  64. # 复制前端文件
  65. COPY --from=aegis-ui-builder /app/dist /usr/share/nginx/html
  66. # 复制自定义 Nginx 配置
  67. COPY ./deployment/nginx/ui.conf /etc/nginx/conf.d/default.conf
  68. # 启动nginx并保持前台运行
  69. CMD ["nginx", "-g", "daemon off;"]