diff --git a/docker/Dockerfile b/docker/Dockerfile index a91347d93..473ffbd47 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -8,7 +8,9 @@ COPY plugins ./plugins RUN find plugins -mindepth 2 -maxdepth 2 ! -name package.json ! -name manifest.json -exec rm -rf {} + # Stage 1: Install dependencies -FROM node:26-slim AS deps +# The builders only produce JS, so they run on the build machine's own arch +# once instead of under QEMU per target. Rolldown hangs under arm64 emulation. +FROM --platform=$BUILDPLATFORM node:26-slim AS deps WORKDIR /app RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* @@ -42,10 +44,6 @@ WORKDIR /app COPY . . -RUN rm -rf node_modules/better-sqlite3/prebuilds && \ - npm run build-release --prefix node_modules/better-sqlite3 && \ - test -f node_modules/better-sqlite3/build/Release/better_sqlite3.node - RUN npm run build:backend # Stage 4: Download OPKSSH binary for the target platform so the image works offline diff --git a/package.json b/package.json index b032869af..03e84bb89 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "dev:backend": "npm run build:sdk && tsc -p tsconfig.node.json && node -e \"require('fs').copyFileSync('src/backend/package.json','dist/backend/package.json')\" && npm run build:plugins && node ./dist/backend/backend/starter.js", "dev:docker": "docker stop termix-dev 2>nul & docker rm termix-dev 2>nul & docker build -f docker/Dockerfile -t termix:dev --no-cache . && docker run -d --name termix-dev -p 3000:3000 -p 8080:8080 -p 30001:30001 -v \"%cd%\\db\\data:/app/data\" termix:dev", "dev:docker:restart": "docker stop termix-dev 2>nul & docker rm termix-dev 2>nul & docker run -d --name termix-dev -p 8080:8080 -p 30001:30001 -v \"%cd%\\db\\data:/app/data\" termix:dev", - "generate:openapi": "tsc -p tsconfig.node.json && node -e \"require('fs').copyFileSync('src/backend/package.json','dist/backend/package.json')\" && node ./dist/backend/backend/utils/swagger.js", + "generate:openapi": "npm run build:sdk && tsc -p tsconfig.node.json && node -e \"require('fs').copyFileSync('src/backend/package.json','dist/backend/package.json')\" && node ./dist/backend/backend/utils/swagger.js", "preview": "vite preview", "electron:dev": "concurrently \"npm run dev\" \"powershell -c \\\"Start-Sleep -Seconds 5\\\" && electron .\"", "electron:patch-builder": "node scripts/patch-app-builder-lib.cjs",