From d5137719b55b0976e6f8af2f43940813213db9f3 Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Sat, 15 Nov 2025 08:48:51 +0100 Subject: [PATCH] Fix docker --- apps/api/Dockerfile | 48 +++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/apps/api/Dockerfile b/apps/api/Dockerfile index e1cb04f..bc33459 100644 --- a/apps/api/Dockerfile +++ b/apps/api/Dockerfile @@ -12,27 +12,47 @@ ENV PATH="$PNPM_HOME:$PATH" RUN corepack enable # ============================================================================== -# Production dependencies stage +# Build stage - Install all dependencies and build # ============================================================================== -FROM base AS prod +FROM base AS build # Copy only lockfile first for better layer caching COPY pnpm-lock.yaml /app/pnpm-lock.yaml WORKDIR /app -# Fetch production dependencies (only needs lockfile) -RUN pnpm fetch --prod +# Fetch all dependencies (including devDependencies for build) +RUN pnpm fetch # Copy source files COPY . /app -# Install production dependencies from fetched cache -RUN pnpm install --prod --frozen-lockfile --offline +# Install all dependencies from fetched cache +RUN pnpm install --frozen-lockfile --offline # Build the API WORKDIR /app/apps/api RUN pnpm run build +# ============================================================================== +# Production dependencies stage +# ============================================================================== +FROM base AS prod-deps + +# Copy only lockfile first +COPY pnpm-lock.yaml /app/pnpm-lock.yaml +WORKDIR /app + +# Fetch only production dependencies +RUN pnpm fetch --prod + +# Copy workspace files needed for install +COPY pnpm-workspace.yaml package.json /app/ +COPY packages /app/packages +COPY apps/api/package.json /app/apps/api/package.json + +# Install production dependencies from fetched cache +RUN pnpm install --prod --frozen-lockfile --offline + # ============================================================================== # Final stage - Production image # ============================================================================== @@ -42,13 +62,15 @@ FROM base RUN groupadd --gid 1001 nodejs && \ useradd -l --uid 1001 --gid nodejs --shell /bin/bash --create-home nodejs -# Copy production dependencies and built application from prod stage -COPY --from=prod /app/node_modules /app/node_modules -COPY --from=prod /app/packages /app/packages -COPY --from=prod /app/apps/api/dist /app/apps/api/dist -COPY --from=prod /app/apps/api/package.json /app/apps/api/package.json -COPY --from=prod /app/pnpm-workspace.yaml /app/pnpm-workspace.yaml -COPY --from=prod /app/package.json /app/package.json +# Copy production dependencies from prod-deps stage +COPY --from=prod-deps /app/node_modules /app/node_modules +COPY --from=prod-deps /app/packages /app/packages + +# Copy built application from build stage +COPY --from=build /app/apps/api/dist /app/apps/api/dist +COPY --from=build /app/apps/api/package.json /app/apps/api/package.json +COPY --from=build /app/pnpm-workspace.yaml /app/pnpm-workspace.yaml +COPY --from=build /app/package.json /app/package.json # Set working directory WORKDIR /app/apps/api