Dockerfile 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # Playable Ads Platform - Production Image
  2. #
  3. # 包含:
  4. # - Express API + 构建服务 (platform/server)
  5. # - React 前端静态文件 (platform/client)
  6. # - 填色模板 + 依赖 (templates/coloring) —— 供构建服务调用 vite build
  7. FROM node:20-alpine
  8. WORKDIR /app
  9. # ---- 安装模板依赖(构建服务需要 vite / vite-plugin-singlefile / typescript) ----
  10. COPY templates/coloring/package.json templates/coloring/package-lock.json ./templates/coloring/
  11. RUN cd templates/coloring && npm ci --production=false
  12. # ---- 安装 server 依赖 ----
  13. COPY platform/server/package.json platform/server/package-lock.json ./platform/server/
  14. RUN cd platform/server && npm ci --production=false
  15. # ---- 复制源码 ----
  16. COPY templates/coloring/ ./templates/coloring/
  17. COPY platform/server/ ./platform/server/
  18. COPY platform/client/dist/ ./platform/client/dist/
  19. # ---- 编译 server TypeScript ----
  20. RUN cd platform/server && npx tsc
  21. # ---- 清理 server devDependencies(减小镜像体积) ----
  22. # 保留 node_modules 用于运行时,templates 需要 vite 所以不能删
  23. RUN cd platform/server && npm prune --production
  24. # ---- 运行时目录 ----
  25. RUN mkdir -p /app/storage/creatives
  26. ENV PORT=3001
  27. ENV NODE_ENV=production
  28. EXPOSE 3001
  29. CMD ["node", "platform/server/dist/index.js"]