diff --git a/services/mana-landing-builder/Dockerfile b/services/mana-landing-builder/Dockerfile index 82a9ef323..56c5cfa15 100644 --- a/services/mana-landing-builder/Dockerfile +++ b/services/mana-landing-builder/Dockerfile @@ -4,33 +4,30 @@ # ================================ FROM node:20-alpine AS base RUN corepack enable && corepack prepare pnpm@9.15.0 --activate -# Astro build needs git for some operations RUN apk add --no-cache git WORKDIR /app -# Install dependencies +# Install all dependencies FROM base AS deps COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY patches ./patches COPY services/mana-landing-builder/package.json ./services/mana-landing-builder/ COPY packages/shared-types/package.json ./packages/shared-types/ -# Template needs shared-landing-ui at build time COPY packages/shared-landing-ui/package.json ./packages/shared-landing-ui/ COPY services/mana-landing-builder/template/package.json ./services/mana-landing-builder/template/ RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --frozen-lockfile --filter @mana-landing-builder/service... # Build the NestJS application FROM base AS builder -COPY --from=deps /app/node_modules ./node_modules -COPY --from=deps /app/services/mana-landing-builder/node_modules ./services/mana-landing-builder/node_modules +COPY --from=deps /app ./ COPY services/mana-landing-builder ./services/mana-landing-builder COPY packages/shared-types ./packages/shared-types COPY packages/shared-landing-ui ./packages/shared-landing-ui WORKDIR /app/services/mana-landing-builder RUN pnpm build -# Deploy standalone version (resolves pnpm symlinks) -RUN pnpm deploy --filter @mana-landing-builder/service --prod /app/deploy +# Prune dev dependencies +RUN pnpm prune --prod # ================================ # Production Stage @@ -48,13 +45,19 @@ RUN adduser --system --uid 1001 nestjs WORKDIR /app -# Copy deployed standalone application -COPY --from=builder --chown=nestjs:nodejs /app/deploy ./ -COPY --from=builder --chown=nestjs:nodejs /app/services/mana-landing-builder/dist ./dist -# Copy template (needed at runtime for builds) -COPY --from=builder --chown=nestjs:nodejs /app/services/mana-landing-builder/template ./template -# Copy shared-landing-ui (needed by template at astro build time) +# Copy the entire built workspace (needed for pnpm workspace resolution at runtime) +COPY --from=builder --chown=nestjs:nodejs /app/package.json ./ +COPY --from=builder --chown=nestjs:nodejs /app/pnpm-workspace.yaml ./ +COPY --from=builder --chown=nestjs:nodejs /app/pnpm-lock.yaml ./ +COPY --from=builder --chown=nestjs:nodejs /app/node_modules ./node_modules +COPY --from=builder --chown=nestjs:nodejs /app/services/mana-landing-builder/dist ./services/mana-landing-builder/dist +COPY --from=builder --chown=nestjs:nodejs /app/services/mana-landing-builder/package.json ./services/mana-landing-builder/package.json +COPY --from=builder --chown=nestjs:nodejs /app/services/mana-landing-builder/node_modules ./services/mana-landing-builder/node_modules +# Template (needed at runtime for astro builds) +COPY --from=builder --chown=nestjs:nodejs /app/services/mana-landing-builder/template ./services/mana-landing-builder/template +# Shared packages (needed by template at astro build time) COPY --from=builder --chown=nestjs:nodejs /app/packages/shared-landing-ui ./packages/shared-landing-ui +COPY --from=builder --chown=nestjs:nodejs /app/packages/shared-types ./packages/shared-types # Create builds directory with correct permissions RUN mkdir -p /app/.builds && chown nestjs:nodejs /app/.builds @@ -66,4 +69,5 @@ EXPOSE 3030 HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://127.0.0.1:3030/api/v1/health || exit 1 +WORKDIR /app/services/mana-landing-builder CMD ["node", "dist/main"]