Fix docker

This commit is contained in:
Arthur Belleville 2025-11-15 08:48:51 +01:00
parent 8c53e8a9b0
commit d5137719b5
No known key found for this signature in database

View file

@ -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