43 lines
1.4 KiB
Docker
43 lines
1.4 KiB
Docker
# Byggas från projektets rot: docker build -f backend/Dockerfile -t recipe-api:local .
|
||
|
||
# Stage 1: Bygg recipe-document-converter
|
||
FROM node:22-alpine AS converter-build
|
||
WORKDIR /converter
|
||
COPY recipe-document-converter/package.json ./
|
||
RUN npm install
|
||
COPY recipe-document-converter/src ./src
|
||
COPY recipe-document-converter/tsconfig.json ./
|
||
RUN npm run build
|
||
|
||
# Stage 2: Installera backend-beroenden
|
||
FROM node:22-alpine AS deps
|
||
WORKDIR /app
|
||
COPY backend/package.json ./
|
||
COPY backend/prisma ./prisma
|
||
# Ta bort file:-referensen så att npm inte försöker skapa en symlink till converter
|
||
RUN npm pkg delete dependencies.recipe-document-converter && npm install
|
||
|
||
# Stage 3: Bygg applikationen
|
||
FROM node:22-alpine AS builder
|
||
WORKDIR /app
|
||
COPY --from=deps /app/node_modules ./node_modules
|
||
# Lägg in converter direkt i node_modules – undviker symlänk-problematik helt
|
||
COPY --from=converter-build /converter/dist ./node_modules/recipe-document-converter/dist
|
||
COPY --from=converter-build /converter/package.json ./node_modules/recipe-document-converter/package.json
|
||
COPY backend/ .
|
||
RUN npx prisma generate
|
||
RUN npm run build
|
||
|
||
# Stage 4: 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"]
|