refactor: update Dockerfile stages for improved build process and add converter dependency

This commit is contained in:
Nils-Johan Gynther
2026-04-11 17:43:34 +02:00
parent 2330ea938c
commit 5c5177432d
3 changed files with 32 additions and 5 deletions
+30 -5
View File
@@ -274,7 +274,11 @@ Flöde i Next.js:
### Docker-bygget
Backend-Dockerfilen använder nu projektets rot (`.`) som byggkontext. Converter-biblioteket kompileras i en separat stage:
Backend-Dockerfilen använder projektets rot (`.`) som byggkontext. Bygget sker i tre steg:
1. **converter-build** — Kompilerar `recipe-document-converter` till JavaScript + typdeklarationer
2. **builder** — Installerar backend-beroenden, kopierar in den kompilerade convertern till `node_modules/`, genererar Prisma-klient och bygger NestJS-appen
3. **runner** — Minimal produktionsimage med enbart `dist/`, `node_modules/` och `prisma/`
```dockerfile
# Stage 1: Bygg converter-biblioteket
@@ -286,13 +290,34 @@ COPY recipe-document-converter/src ./src
COPY recipe-document-converter/tsconfig.json ./
RUN npm run build
# Stage 2: Installera backend-beroenden (converter kopieras in)
FROM node:22-alpine AS deps
# Stage 2: Bygg applikationen
FROM node:22-alpine AS builder
WORKDIR /app
COPY --from=converter-build /converter /recipe-document-converter
...
COPY backend/package.json ./
COPY backend/prisma ./prisma
COPY backend/src ./src
COPY backend/tsconfig.json ./
COPY backend/nest-cli.json ./
RUN npm install
# Kopiera in det kompilerade converter-biblioteket efter npm install
COPY --from=converter-build /converter ./node_modules/recipe-document-converter
RUN npx prisma generate
RUN npm run build
# Stage 3: Kör applikationen
FROM node:22-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 --from=builder /app/prisma ./prisma
COPY --from=builder /app/dist ./dist
EXPOSE 8080
CMD ["node", "dist/main"]
```
> **OBS:** `backend/package.json` har `"recipe-document-converter": "file:../recipe-document-converter"` för lokal utveckling. I Docker-bygget ignoreras den file-referensen — convertern kopieras in manuellt från converter-build-steget.
Bygga om backend efter ändringar:
```bash
docker compose build recipe-api
+1
View File
@@ -11,6 +11,7 @@
"prisma:deploy": "prisma migrate deploy"
},
"dependencies": {
"recipe-document-converter": "file:../recipe-document-converter",
"@nestjs/common": "^10.3.0",
"@nestjs/core": "^10.3.0",
"@nestjs/platform-express": "^10.3.0",
+1
View File
@@ -12,6 +12,7 @@ RUN npm run build
FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV HOSTNAME=0.0.0.0
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static