feat: update Dockerfile stages for improved dependency management; add prisma to package.json and package-lock.json
Test Suite / test (24.15.0) (push) Has been cancelled

This commit is contained in:
Nils-Johan Gynther
2026-05-04 21:02:15 +02:00
parent 5411dfe2c0
commit 5f176ce75f
5 changed files with 20 additions and 29 deletions
+16 -16
View File
@@ -1,33 +1,33 @@
# Byggas från backend-mappen: docker build -t recipe-api:local .
# Stage 1: Bygg applikationen
# Stage 1: Installera enbart produktionsberoenden (exkl. devDeps)
FROM node:24.15.0-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --omit=dev
RUN ./node_modules/.bin/prisma generate
# Stage 2: Bygg applikationen (alla beroenden, kör tester)
FROM node:24.15.0-alpine AS builder
WORKDIR /app
# Kopiera backend-filer
COPY package.json ./
COPY package-lock.json ./
COPY package.json package-lock.json ./
RUN npm ci
COPY prisma ./prisma
COPY src ./src
COPY tsconfig.json ./
COPY nest-cli.json ./
# Köra npm ci för reproducerbara builds
RUN npm ci
RUN npx prisma generate
COPY tsconfig.json nest-cli.json ./
RUN ./node_modules/.bin/prisma generate
RUN npm test
RUN npm run build
# Stage 2: Kör applikationen
# Stage 3: Kör applikationen
FROM node:24.15.0-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/package.json ./package.json
COPY --from=builder /app/node_modules ./node_modules
COPY package.json ./
COPY --from=deps /app/node_modules ./node_modules
COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/dist ./dist
EXPOSE 8080
CMD ["sh", "-c", "until npx prisma migrate deploy; do echo 'Migration failed, retrying in 5s...'; sleep 5; done && node dist/main"]
CMD ["sh", "-c", "until ./node_modules/.bin/prisma migrate deploy; do echo 'Migration failed, retrying in 5s...'; sleep 5; done && node dist/main"]
+1 -9
View File
@@ -22,6 +22,7 @@
"multer": "^1.4.5-lts.2",
"passport": "^0.7.0",
"passport-jwt": "^4.0.1",
"prisma": "6.12.0",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.1",
"sharp": "^0.33.5",
@@ -39,7 +40,6 @@
"@types/passport-jwt": "^4.0.1",
"@types/uuid": "^10.0.0",
"jest": "^29.7.0",
"prisma": "6.12.0",
"ts-jest": "^29.2.6",
"typescript": "^5.4.5"
}
@@ -2088,7 +2088,6 @@
"version": "6.12.0",
"resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.12.0.tgz",
"integrity": "sha512-HovZWzhWEMedHxmjefQBRZa40P81N7/+74khKFz9e1AFjakcIQdXgMWKgt20HaACzY+d1LRBC+L4tiz71t9fkg==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
"jiti": "2.4.2"
@@ -2098,14 +2097,12 @@
"version": "6.12.0",
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.12.0.tgz",
"integrity": "sha512-plbz6z72orcqr0eeio7zgUrZj5EudZUpAeWkFTA/DDdXEj28YHDXuiakvR6S7sD6tZi+jiwQEJAPeV6J6m/tEQ==",
"devOptional": true,
"license": "Apache-2.0"
},
"node_modules/@prisma/engines": {
"version": "6.12.0",
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.12.0.tgz",
"integrity": "sha512-4BRZZUaAuB4p0XhTauxelvFs7IllhPmNLvmla0bO1nkECs8n/o1pUvAVbQ/VOrZR5DnF4HED0PrGai+rIOVePA==",
"devOptional": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
@@ -2119,14 +2116,12 @@
"version": "6.12.0-15.8047c96bbd92db98a2abc7c9323ce77c02c89dbc",
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.12.0-15.8047c96bbd92db98a2abc7c9323ce77c02c89dbc.tgz",
"integrity": "sha512-70vhecxBJlRr06VfahDzk9ow4k1HIaSfVUT3X0/kZoHCMl9zbabut4gEXAyzJZxaCGi5igAA7SyyfBI//mmkbQ==",
"devOptional": true,
"license": "Apache-2.0"
},
"node_modules/@prisma/fetch-engine": {
"version": "6.12.0",
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.12.0.tgz",
"integrity": "sha512-EamoiwrK46rpWaEbLX9aqKDPOd8IyLnZAkiYXFNuq0YsU0Z8K09/rH8S7feOWAVJ3xzeSgcEJtBlVDrajM9Sag==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
"@prisma/debug": "6.12.0",
@@ -2138,7 +2133,6 @@
"version": "6.12.0",
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.12.0.tgz",
"integrity": "sha512-nRerTGhTlgyvcBlyWgt8OLNIV7QgJS2XYXMJD1hysorMCuLAjuDDuoxmVt7C2nLxbuxbWPp7OuFRHC23HqD9dA==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
"@prisma/debug": "6.12.0"
@@ -5983,7 +5977,6 @@
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
"integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
"devOptional": true,
"license": "MIT",
"bin": {
"jiti": "lib/jiti-cli.mjs"
@@ -6995,7 +6988,6 @@
"version": "6.12.0",
"resolved": "https://registry.npmjs.org/prisma/-/prisma-6.12.0.tgz",
"integrity": "sha512-pmV7NEqQej9WjizN6RSNIwf7Y+jeh9mY1JEX2WjGxJi4YZWexClhde1yz/FuvAM+cTwzchcMytu2m4I6wPkIzg==",
"devOptional": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
+1 -1
View File
@@ -19,6 +19,7 @@
"@nestjs/passport": "^10.0.3",
"@nestjs/platform-express": "^10.3.0",
"@prisma/client": "6.12.0",
"prisma": "6.12.0",
"bcryptjs": "^2.4.3",
"passport": "^0.7.0",
"passport-jwt": "^4.0.1",
@@ -42,7 +43,6 @@
"@types/node": "^22.15.29",
"@types/passport-jwt": "^4.0.1",
"@types/uuid": "^10.0.0",
"prisma": "6.12.0",
"typescript": "^5.4.5",
"jest": "^29.7.0",
"ts-jest": "^29.2.6",
+2 -2
View File
@@ -1,9 +1,9 @@
# Stage 1 Build Flutter web
FROM ghcr.io/cirruslabs/flutter:stable AS builder
FROM ghcr.io/cirruslabs/flutter:3.41.9 AS builder
WORKDIR /app
COPY pubspec.yaml pubspec.lock* ./
COPY pubspec.yaml pubspec.lock ./
RUN flutter pub get
COPY . .
@@ -291,7 +291,6 @@ class _ForegroundTile extends ConsumerWidget {
String _fmtQty(double v) => formatQuantity(v);
String _formatDate(String iso) => formatDateString(iso);
}
}
// ── Trailing action buttons ─────────────────────────────────────────────────