From 9b783037ff4bb906f6c1de29ebd1fd148a99e55c Mon Sep 17 00:00:00 2001 From: Simon Franken Date: Wed, 18 Feb 2026 19:02:29 +0100 Subject: [PATCH] impoves docker --- backend/.dockerignore | 9 +++++++++ backend/Dockerfile | 39 ++++++++++++++++++++++++++------------- 2 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 backend/.dockerignore diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..0120785 --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,9 @@ +node_modules +dist +.env +.env.* +npm-debug.log* +*.log +.git +.gitignore +README.md diff --git a/backend/Dockerfile b/backend/Dockerfile index e716992..4874357 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,28 +1,41 @@ -FROM node:20-alpine +# ── Build stage ────────────────────────────────────────────────────────────── +FROM node:20-alpine AS builder -# Install OpenSSL for Prisma +# Install OpenSSL for Prisma client generation RUN apk add --no-cache openssl WORKDIR /app -# Copy package files +# Install all dependencies (including devDependencies needed for build) COPY package*.json ./ -COPY prisma ./prisma/ - -# Install dependencies RUN npm ci -# Generate Prisma client +# Generate Prisma client and compile TypeScript +COPY prisma ./prisma/ RUN npx prisma generate -# Copy source code COPY . . - -# Build TypeScript RUN npm run build -# Expose port +# ── Production stage ────────────────────────────────────────────────────────── +FROM node:20-alpine AS production + +# Install OpenSSL required by Prisma at runtime +RUN apk add --no-cache openssl + +WORKDIR /app + +# Install production dependencies only +COPY package*.json ./ +RUN npm ci --omit=dev + +# Copy Prisma schema + generated client from builder +COPY --from=builder /app/prisma ./prisma +COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma + +# Copy compiled application +COPY --from=builder /app/dist ./dist + EXPOSE 3001 -# Start the application -CMD ["sh", "-c", "npx prisma migrate deploy && npm start"] +CMD ["sh", "-c", "npx prisma migrate deploy && node dist/index.js"]