Run docker installs from the workspace root

Mounting only ./backend and ./frontend into /app made pnpm look for a
per-package lockfile (stale) and miss the workspace-root one entirely,
so --frozen-lockfile failed and root pnpm.onlyBuiltDependencies didn't
apply. Mount the whole repo at /repo, install with --filter from root,
and use the canonical workspace lockfile. Drop the per-package
onlyBuiltDependencies overrides — pnpm warns they're ignored outside
the workspace root.

Pin node:22-bookworm: node:lts now resolves to Node 24, for which
isolated-vm@5.0.3 has no prebuild and won't compile (V8 headers
require C++20).

Gitignore stray per-package lockfiles so they don't drift again.
This commit is contained in:
2026-04-23 21:57:37 +04:00
parent 39460df61d
commit fc59e7e133
4 changed files with 16 additions and 22 deletions

4
.gitignore vendored
View File

@@ -11,6 +11,10 @@ node_modules/
package-lock.json package-lock.json
yarn.lock yarn.lock
# pnpm: only the workspace-root lockfile is authoritative
backend/pnpm-lock.yaml
frontend/pnpm-lock.yaml
# Mac # Mac
.DS_Store .DS_Store

View File

@@ -18,13 +18,5 @@
"devDependencies": { "devDependencies": {
"nodemon": "3.1.14", "nodemon": "3.1.14",
"uuid": "14.0.0" "uuid": "14.0.0"
},
"pnpm": {
"onlyBuiltDependencies": [
"argon2",
"isolated-vm",
"sharp",
"sqlite3"
]
} }
} }

View File

@@ -4,14 +4,15 @@ networks:
services: services:
backend: backend:
image: node:lts-bookworm image: node:22-bookworm
container_name: pca_pijac_backend container_name: pca_pijac_backend
restart: unless-stopped restart: unless-stopped
env_file: ./backend/.env.production env_file: ./backend/.env.production
working_dir: /repo/backend
networks: networks:
- main - main
volumes: volumes:
- ./backend:/app - .:/repo
- ./data:/data - ./data:/data
labels: labels:
caddy: admin.pca-pijac.dev.civokram.com caddy: admin.pca-pijac.dev.civokram.com
@@ -21,22 +22,24 @@ services:
- -c - -c
- | - |
npm i -g pnpm npm i -g pnpm
cd /app cd /repo
pnpm install --production pnpm install --filter ./backend... --frozen-lockfile --prod
cd /repo/backend
rm -f .env rm -f .env
pnpm run start pnpm run start
frontend: frontend:
image: node:lts-bookworm image: node:22-bookworm
container_name: pca_pijac_frontend container_name: pca_pijac_frontend
restart: unless-stopped restart: unless-stopped
env_file: ./frontend/.env.production env_file: ./frontend/.env.production
working_dir: /repo/frontend
depends_on: depends_on:
- backend - backend
networks: networks:
- main - main
volumes: volumes:
- ./frontend:/app - .:/repo
labels: labels:
caddy: pca-pijac.dev.civokram.com caddy: pca-pijac.dev.civokram.com
caddy.reverse_proxy: '{{upstreams 3000}}' caddy.reverse_proxy: '{{upstreams 3000}}'
@@ -45,10 +48,10 @@ services:
- -c - -c
- | - |
npm i -g pnpm npm i -g pnpm
cd /app cd /repo
pnpm install --frozen-lockfile pnpm install --filter ./frontend... --frozen-lockfile
cd /repo/frontend
sleep 10 sleep 10
rm -f .env rm -f .env
pnpm run build pnpm run build
pnpm prune --prod
pnpm run start pnpm run start

View File

@@ -47,10 +47,5 @@
"tailwindcss": "4.2.4", "tailwindcss": "4.2.4",
"typescript": "6.0.3", "typescript": "6.0.3",
"vite": "8.0.10" "vite": "8.0.10"
},
"pnpm": {
"onlyBuiltDependencies": [
"esbuild"
]
} }
} }