From 9ffbf35f25b4d5920c1fb01cdd4bd57c8fbede3b Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Thu, 29 Jan 2026 18:39:05 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix(docker):=20update=20Dockerfi?= =?UTF-8?q?les=20for=20monorepo-aware=20builds?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update mana-search Dockerfile to use monorepo root context - Update api-gateway Dockerfile to use monorepo root context - Fix CI workflow to use context: . for mana-search - Use pnpm --filter for proper workspace package installation Co-Authored-By: Claude Opus 4.5 --- .github/workflows/ci.yml | 2 +- services/mana-api-gateway/Dockerfile | 30 +++++++++++----- services/mana-search/Dockerfile | 53 +++++++++++----------------- 3 files changed, 44 insertions(+), 41 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 84bb0e9f3..c40560eb8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -488,7 +488,7 @@ jobs: tags: type=raw,value=latest - uses: docker/build-push-action@v5 with: - context: services/mana-search + context: . file: services/mana-search/Dockerfile platforms: linux/amd64,linux/arm64 push: true diff --git a/services/mana-api-gateway/Dockerfile b/services/mana-api-gateway/Dockerfile index 74076aec6..07d364695 100644 --- a/services/mana-api-gateway/Dockerfile +++ b/services/mana-api-gateway/Dockerfile @@ -1,20 +1,32 @@ +# ================================ +# Build Stage (Monorepo-aware) +# ================================ FROM node:20-alpine AS base RUN corepack enable && corepack prepare pnpm@9.15.0 --activate WORKDIR /app # Install dependencies FROM base AS deps -COPY package.json pnpm-lock.yaml* ./ -RUN pnpm install --frozen-lockfile --prod=false +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +COPY services/mana-api-gateway/package.json ./services/mana-api-gateway/ +COPY packages/shared-nestjs-auth/package.json ./packages/shared-nestjs-auth/ +RUN pnpm install --frozen-lockfile --filter @manacore/api-gateway... # Build the application FROM base AS builder COPY --from=deps /app/node_modules ./node_modules -COPY . . +COPY --from=deps /app/services/mana-api-gateway/node_modules ./services/mana-api-gateway/node_modules +COPY --from=deps /app/packages/shared-nestjs-auth/node_modules ./packages/shared-nestjs-auth/node_modules 2>/dev/null || true +COPY packages/shared-nestjs-auth ./packages/shared-nestjs-auth +COPY services/mana-api-gateway ./services/mana-api-gateway +WORKDIR /app/services/mana-api-gateway RUN pnpm build -# Production image -FROM base AS runner +# ================================ +# Production Stage +# ================================ +FROM node:20-alpine AS runner +RUN corepack enable && corepack prepare pnpm@9.15.0 --activate ENV NODE_ENV=production # Create non-root user @@ -22,10 +34,12 @@ RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nestjs USER nestjs +WORKDIR /app + # Copy built application -COPY --from=builder --chown=nestjs:nodejs /app/dist ./dist -COPY --from=builder --chown=nestjs:nodejs /app/node_modules ./node_modules -COPY --from=builder --chown=nestjs:nodejs /app/package.json ./ +COPY --from=builder --chown=nestjs:nodejs /app/services/mana-api-gateway/dist ./dist +COPY --from=builder --chown=nestjs:nodejs /app/services/mana-api-gateway/node_modules ./node_modules +COPY --from=builder --chown=nestjs:nodejs /app/services/mana-api-gateway/package.json ./ EXPOSE 3030 diff --git a/services/mana-search/Dockerfile b/services/mana-search/Dockerfile index 527e94098..acbc002ed 100644 --- a/services/mana-search/Dockerfile +++ b/services/mana-search/Dockerfile @@ -1,53 +1,42 @@ # ================================ -# Build Stage +# Build Stage (Monorepo-aware) # ================================ -FROM node:20-slim AS builder - -# Install pnpm -RUN npm install -g pnpm@9.15.0 - +FROM node:20-alpine AS base +RUN corepack enable && corepack prepare pnpm@9.15.0 --activate WORKDIR /app -# Copy package files -COPY package.json pnpm-lock.yaml* ./ - # Install dependencies -RUN pnpm install --frozen-lockfile - -# Copy source code -COPY tsconfig.json nest-cli.json ./ -COPY src ./src +FROM base AS deps +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +COPY services/mana-search/package.json ./services/mana-search/ +RUN pnpm install --frozen-lockfile --filter @manacore/mana-search... # Build the application +FROM base AS builder +COPY --from=deps /app/node_modules ./node_modules +COPY --from=deps /app/services/mana-search/node_modules ./services/mana-search/node_modules +COPY services/mana-search ./services/mana-search +WORKDIR /app/services/mana-search RUN pnpm build # ================================ # Production Stage # ================================ -FROM node:20-slim AS production - -# Install pnpm -RUN npm install -g pnpm@9.15.0 +FROM node:20-alpine AS runner +RUN corepack enable && corepack prepare pnpm@9.15.0 --activate +ENV NODE_ENV=production # Create non-root user -RUN groupadd -r nestjs && useradd -r -g nestjs nestjs +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nestjs +USER nestjs WORKDIR /app -# Copy package files -COPY package.json pnpm-lock.yaml* ./ - -# Install production dependencies only -RUN pnpm install --prod --frozen-lockfile - # Copy built application -COPY --from=builder /app/dist ./dist - -# Set ownership -RUN chown -R nestjs:nestjs /app - -# Switch to non-root user -USER nestjs +COPY --from=builder --chown=nestjs:nodejs /app/services/mana-search/dist ./dist +COPY --from=builder --chown=nestjs:nodejs /app/services/mana-search/node_modules ./node_modules +COPY --from=builder --chown=nestjs:nodejs /app/services/mana-search/package.json ./ # Expose port EXPOSE 3021