Dockerfile-web 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # 第一阶段:构建Vue前端
  2. FROM node:18 AS web-builder
  3. WORKDIR /app
  4. COPY main/manager-web/package*.json ./
  5. RUN npm install
  6. COPY main/manager-web .
  7. RUN npm run build
  8. # 第二阶段:构建Java后端
  9. FROM maven:3.9.4-eclipse-temurin-21 AS api-builder
  10. WORKDIR /app
  11. COPY main/manager-api/pom.xml .
  12. COPY main/manager-api/src ./src
  13. RUN mvn clean package -Dmaven.test.skip=true
  14. # 第三阶段:构建最终镜像
  15. FROM bellsoft/liberica-runtime-container:jre-21-glibc
  16. # 安装Nginx和字体库
  17. RUN apk update && \
  18. apk add --no-cache --no-scripts \
  19. nginx \
  20. bash \
  21. fontconfig \
  22. ttf-dejavu \
  23. && rm -rf /var/cache/apk/* \
  24. && mkdir -p /run/nginx /var/log/nginx /var/tmp/nginx /etc/nginx/conf.d
  25. # 复制项目自带的中文字体
  26. COPY main/manager-web/public/generator/static/fonts/*.ttf /usr/share/fonts/
  27. # 更新字体缓存
  28. RUN fc-cache -f -v
  29. # 配置Nginx
  30. COPY docs/docker/nginx.conf /etc/nginx/nginx.conf
  31. # 复制前端构建产物
  32. COPY --from=web-builder /app/dist /usr/share/nginx/html
  33. # 复制Java后端JAR包
  34. COPY --from=api-builder /app/target/xiaozhi-esp32-api.jar /app/xiaozhi-esp32-api.jar
  35. # 暴露端口
  36. EXPOSE 8002
  37. # 启动脚本
  38. COPY docs/docker/start.sh /start.sh
  39. RUN chmod +x /start.sh
  40. CMD ["/start.sh"]