From 094066426e820decdb3a158f6f98855753694d61 Mon Sep 17 00:00:00 2001 From: elpatron Date: Mon, 6 Oct 2025 17:34:58 +0200 Subject: [PATCH] docker: build server-dist in builder stage; run-time uses built server; keep client dist prebuilt --- Dockerfile | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 519f1bd..ee2c543 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,22 @@ +FROM node:22-alpine AS builder + +# Install pnpm +RUN npm install -g pnpm + +WORKDIR /app + +# Install all deps for building server +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +RUN pnpm install --frozen-lockfile + +# Copy only server sources and tsconfig for server build +COPY src/server ./src/server +COPY tsconfig.server.json ./tsconfig.server.json +COPY tsconfig.server.build.json ./tsconfig.server.build.json + +# Build server only (no client build) +RUN pnpm tsc -p tsconfig.server.build.json + FROM node:22-alpine AS production # Install pnpm and required runtime tools @@ -14,7 +33,8 @@ RUN pnpm install --frozen-lockfile --prod # Copy prebuilt application artifacts from repository (no TS build in image) COPY dist ./dist -COPY server-dist ./server-dist +# Use freshly built server from builder stage +COPY --from=builder /app/server-dist ./server-dist COPY public ./public # Copy necessary runtime files