Dockerfile 877 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. FROM node:22-slim AS builder
  2. # --max-old-space-size
  3. ENV PNPM_HOME="/pnpm"
  4. ENV PATH="$PNPM_HOME:$PATH"
  5. ENV NODE_OPTIONS=--max-old-space-size=8192
  6. ENV TZ=Asia/Shanghai
  7. ENV CI=true
  8. RUN npm i -g corepack
  9. WORKDIR /app
  10. # copy package.json and pnpm-lock.yaml to workspace
  11. COPY . /app
  12. # 安装依赖
  13. RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
  14. RUN pnpm run build --filter=\!./docs
  15. RUN echo "Builder Success 🎉"
  16. FROM nginx:stable-alpine AS production
  17. # 配置 nginx
  18. RUN echo "types { application/javascript js mjs; }" > /etc/nginx/conf.d/mjs.conf \
  19. && rm -rf /etc/nginx/conf.d/default.conf
  20. # 复制构建产物
  21. COPY --from=builder /app/playground/dist /usr/share/nginx/html
  22. # 复制 nginx 配置
  23. COPY --from=builder /app/scripts/deploy/nginx.conf /etc/nginx/nginx.conf
  24. EXPOSE 8080
  25. # 启动 nginx
  26. CMD ["nginx", "-g", "daemon off;"]