refactor: update Dockerfile stages for improved build process and add converter dependency
This commit is contained in:
+30
-5
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user