VPS环境下Docker构建Vite前端卡在npm run build
问题:Docker构建Vite前端时卡在transforming阶段并出现SIGKILL
我在项目Mug中使用Docker容器部署,本地与VPS上的代码完全一致,但在VPS执行docker compose build时,前端容器会无限卡在npm run build的transforming阶段。
已排查的情况:
- 曾怀疑VPS内存不足,但通过
top命令查看node进程仅占用约60%内存和40%CPU,排除该可能 - 将Dockerfile中的
RUN npm run build改为CMD ["npm", "run", "build"]后,问题仍未解决,还出现SIGKILL错误提示
相关配置代码
frontend/Dockerfile
FROM node:alpine WORKDIR /frontend COPY . . RUN npm install -g vite@latest RUN npm install RUN npm run build
docker-compose.yml
version: "3.4" services: frontend_static: container_name: mug_frontend_static build: context: ./frontend dockerfile: Dockerfile volumes: - mug_frontend_static:/frontend/dist backend: container_name: mug_backend build: context: ./backend dockerfile: Dockerfile env_file: - ./backend/mug/.env expose: - 8080 command: gunicorn mug.wsgi:application --bind 0.0.0.0:8080 --log-level debug volumes: - mug_static:/app/static - mug_media:/app/media depends_on: - postgres networks: - internal postgres: image: postgres:alpine container_name: mug_postgres volumes: - mug_postgres_data:/var/lib/postgresql/data env_file: - ./backend/mug/db.env environment: POSTGRES_DB: Mug POSTGRES_USER: postgres networks: - internal nginx: image: nginx:alpine container_name: mug_nginx expose: - 80 volumes: - ./nginx.conf:/etc/nginx/nginx.conf - mug_frontend_static:/frontend/dist - mug_static:/static - mug_media:/media labels: - "traefik.enable=true" - "traefik.http.routers.mug.rule=(Host(`mug.micheleawada.com`) || Host(`backend.mug.micheleawada.com`))" - "traefik.http.routers.mug.entrypoints=websecure" - "traefik.http.routers.mug.tls=true" - "traefik.http.routers.mug.tls.certresolver=letsencrypt" networks: - internal - traefikproxy volumes: mug_postgres_data: mug_media: mug_static: mug_frontend_static: networks: internal: traefikproxy: name: traefikproxy external: true
frontend/vite.config.js
import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; export default defineConfig({ plugins: [react()], build: { watch: false, }, });
frontend/package.json
{ "name": "frontend", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vite build", "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview" }, "dependencies": { "@react-oauth/google": "^0.12.1", "axios": "^1.6.0", "flowbite-react": "^0.6.4", "hamburger-react": "^2.5.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.11.0", "react-oauth": "^0.0.1", "react-router-dom": "^6.17.0", "universal-cookie": "^6.1.1" }, "devDependencies": { "@types/react": "^18.2.15", "@types/react-dom": "^18.2.7", "@vitejs/plugin-react": "^4.0.3", "autoprefixer": "^10.4.16", "eslint": "^8.45.0", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", "postcss": "^8.4.31", "tailwindcss": "^3.3.5", "vite": "^4.5.1" } }
注:package-lock.json内容过长未提供
内容的提问来源于stack exchange,提问作者user20956663
相关产品推荐
相关产品推荐

