Files
sales-trainer/docs/engineering-log/2026-08-07-docker-fix.md

1.8 KiB

2026-08-07 — Docker build fix: 'vite: not found' on EasyPanel

Symptom

EasyPanel docker build failed at RUN cd frontend && npm run build with: sh: 1: vite: not found (exit 127). Step 7/11 (frontend build).

Root cause

The Dockerfile set ENV NODE_ENV=production before RUN cd frontend && npm install. With NODE_ENV=production, npm skips devDependencies — and vite + @vitejs/plugin-vue are devDependencies. So npm run build had no vite binary → vite: not found.

Fix (commit bdd7c44)

  • Removed the early ENV NODE_ENV=production (must not be set before the frontend build).
  • Changed npm installnpm ci (deterministic from committed frontend/package-lock.json, falls back to npm install if lockfile missing — it is committed, so npm ci applies).
  • NODE_ENV for the Flask runtime is not needed; FLASK_DEBUG=0 is set at the CMD stage.

Verification (no local Docker)

  • npm ci locally: succeeds; vite package present under node_modules/vite (Node 20/npm 10 in the image runs esbuild/vite postinstall scripts by default — no allowScripts blocking).
  • npm run build: succeeds (✓ built), producing fresh frontend/dist/.
  • This confirms the Docker npm-build path (devDeps installed → vite present) will now succeed.

Note on committed frontend source

The router now includes tabbed views (/my/boardMyBoard.vue, /trainingTraining.vue, /settingsSettings.vue) and the app's Dashboard is admin-only with / → admin, trainees redirect to /my/board. These views are already tracked and pushed; the Docker build ships them.

Remaining before live model

  • Still needs a real LLM_API_KEY (+ provider) in backend/.env for analyze/persona/chat.
  • Validate the Docker build on EasyPanel once re-deployed.