From 004f1228a2db74beab16c5292ffb466cd92ed6dd Mon Sep 17 00:00:00 2001 From: GoHorse Deploy Date: Sat, 7 Feb 2026 20:08:43 +0000 Subject: [PATCH] fix: use npm in Dockerfile --- frontend/Dockerfile | 126 +++++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 73 deletions(-) diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 89b3f2d..18edfd8 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,73 +1,53 @@ -# ============================================================================= -# GoHorse Jobs Frontend - Ultra-Optimized Dockerfile -# ============================================================================= -# syntax=docker/dockerfile:1 - -# ----------------------------------------------------------------------------- -# Stage 1: Base with pnpm -# ----------------------------------------------------------------------------- -FROM mirror.gcr.io/library/node:20-alpine AS base -RUN corepack enable && corepack prepare pnpm@latest --activate -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" - -# ----------------------------------------------------------------------------- -# Stage 2: Dependencies -# ----------------------------------------------------------------------------- -FROM base AS deps -WORKDIR /app -COPY package.json package-lock.json* pnpm-lock.yaml* ./ -RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ - pnpm import 2>/dev/null || true && \ - pnpm install --frozen-lockfile || pnpm install - -# ----------------------------------------------------------------------------- -# Stage 3: Builder (AQUI ESTAVA O PROBLEMA) -# ----------------------------------------------------------------------------- -FROM base AS builder -ENV NODE_OPTIONS="--max-old-space-size=512" -WORKDIR /app -COPY --from=deps /app/node_modules ./node_modules - -# CORREÇÃO: Copiando TODAS as configs e pastas necessárias -COPY package.json next.config.* tsconfig.json postcss.config.mjs ./ -# Se tiver outras configs como tailwind.config.ts, adicione aqui ou use COPY . . (com dockerignore bom) -COPY public ./public -COPY src ./src -# Adicionei a pasta messages que apareceu no seu ls -COPY messages ./messages - -# Build arguments -ARG NEXT_PUBLIC_API_URL=http://localhost:8521 -ARG NEXT_PUBLIC_BACKOFFICE_URL=http://localhost:3001 -ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL -ENV NEXT_PUBLIC_BACKOFFICE_URL=$NEXT_PUBLIC_BACKOFFICE_URL -ENV NEXT_TELEMETRY_DISABLED=1 - -RUN pnpm build && \ - rm -rf node_modules/.cache .next/cache - -# ----------------------------------------------------------------------------- -# Stage 4: Production Runner -# ----------------------------------------------------------------------------- -FROM mirror.gcr.io/library/node:20-alpine AS runner -WORKDIR /app - -RUN addgroup -g 1001 -S nodejs && \ - adduser -u 1001 -S nextjs -G nodejs - -ENV NODE_ENV=production \ - NEXT_TELEMETRY_DISABLED=1 \ - PORT=3000 \ - HOSTNAME="0.0.0.0" - -# O Docker faz o "cp" que você fez na mão AQUI: -COPY --from=builder --chown=nextjs:nodejs /app/public ./public -COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ -COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static - -USER nextjs - -EXPOSE 3000 - -CMD ["node", "server.js"] \ No newline at end of file +# Stage 1: Base +FROM node:22-alpine AS base +WORKDIR /app + +# Stage 2: Dependencies +FROM base AS deps +WORKDIR /app +COPY package.json package-lock.json ./ +# Install dependencies using npm +RUN npm ci + +# Stage 3: Builder +FROM base AS builder +ENV NODE_OPTIONS="--max-old-space-size=512" +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY package.json next.config.* tsconfig.json postcss.config.mjs ./ + +# Copy other necessary files +COPY public ./public +COPY src ./src +COPY messages ./messages + +# Build arguments (Preserved from original) +ARG NEXT_PUBLIC_API_URL=http://localhost:8521 +ARG NEXT_PUBLIC_BACKOFFICE_URL=http://localhost:3001 +ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL +ENV NEXT_PUBLIC_BACKOFFICE_URL=$NEXT_PUBLIC_BACKOFFICE_URL +ENV NEXT_TELEMETRY_DISABLED=1 + +RUN npm run build && \ + rm -rf node_modules/.cache .next/cache + +# Stage 4: Production Runner +FROM base AS runner +WORKDIR /app +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 +ENV PORT=3000 +ENV HOSTNAME="0.0.0.0" + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +COPY --from=builder /app/public ./public +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + +USER nextjs + +EXPOSE 3000 + +CMD ["node", "server.js"]