Update workloads/ecommerce/Dockerfile
Build and Push Frontend / build (push) Canceled after 0s

This commit is contained in:
2026-07-24 04:15:25 +00:00
parent 891757e973
commit dc9827e353
+12 -13
View File
@@ -3,7 +3,7 @@
ARG NODE_IMAGE=node:24.18.0-bookworm-slim ARG NODE_IMAGE=node:24.18.0-bookworm-slim
# ============================================================ # ============================================================
# 1. Instalación de dependencias # 1. Dependencias reproducibles
# ============================================================ # ============================================================
FROM ${NODE_IMAGE} AS deps FROM ${NODE_IMAGE} AS deps
@@ -16,25 +16,25 @@ ENV NEXT_TELEMETRY_DISABLED=1 \
NPM_CONFIG_FETCH_RETRY_MINTIMEOUT=10000 \ NPM_CONFIG_FETCH_RETRY_MINTIMEOUT=10000 \
NPM_CONFIG_FETCH_RETRY_MAXTIMEOUT=60000 \ NPM_CONFIG_FETCH_RETRY_MAXTIMEOUT=60000 \
NPM_CONFIG_FETCH_TIMEOUT=120000 \ NPM_CONFIG_FETCH_TIMEOUT=120000 \
NPM_CONFIG_MAXSOCKETS=6 \ NPM_CONFIG_MAXSOCKETS=8 \
NPM_CONFIG_LOGLEVEL=info NPM_CONFIG_LOGLEVEL=info
COPY package.json package-lock.json ./ COPY package.json package-lock.json ./
# Muestra las versiones y valida acceso al registro antes de instalar.
RUN node --version \ RUN node --version \
&& npm --version \ && npm --version \
&& npm config set registry https://registry.npmjs.org/ \ && npm config set registry https://registry.npmjs.org/ \
&& npm config get registry \ && npm config get registry \
&& npm ping && npm ping
# sharing=private evita quedar esperando el caché de otro build. # El caché es privado para evitar esperas por locks de otros builds.
# timeout impide que npm quede bloqueado indefinidamente. # El timeout evita una ejecución bloqueada indefinidamente.
RUN --mount=type=cache,target=/root/.npm,sharing=private \ RUN --mount=type=cache,target=/root/.npm,sharing=private \
timeout 600s npm ci \ timeout --signal=TERM 900s \
npm ci \
--no-audit \ --no-audit \
--no-fund \ --no-fund \
--prefer-offline \ --prefer-online \
--loglevel=info \ --loglevel=info \
--timing --timing
@@ -53,27 +53,25 @@ ENV NODE_ENV=production \
COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/node_modules ./node_modules
COPY . . COPY . .
# Conserva el caché de compilación de Next.js entre builds.
RUN --mount=type=cache,target=/app/.next/cache,sharing=private \ RUN --mount=type=cache,target=/app/.next/cache,sharing=private \
npm run build npm run build
# Verifica que next.config.ts tenga output: "standalone".
RUN test -f /app/.next/standalone/server.js RUN test -f /app/.next/standalone/server.js
# ============================================================ # ============================================================
# 3. Imagen final de producción # 3. Runtime de producción
# ============================================================ # ============================================================
FROM ${NODE_IMAGE} AS runner FROM ${NODE_IMAGE} AS runner
WORKDIR /app WORKDIR /app
ENV NODE_ENV=production \ ENV DEBIAN_FRONTEND=noninteractive \
NODE_ENV=production \
NEXT_TELEMETRY_DISABLED=1 \ NEXT_TELEMETRY_DISABLED=1 \
HOSTNAME=0.0.0.0 \ HOSTNAME=0.0.0.0 \
PORT=80 PORT=80
# libcap permite que el usuario no-root escuche en el puerto 80.
RUN apt-get update \ RUN apt-get update \
&& apt-get install -y --no-install-recommends \ && apt-get install -y --no-install-recommends \
ca-certificates \ ca-certificates \
@@ -86,7 +84,8 @@ RUN apt-get update \
--create-home \ --create-home \
--shell /usr/sbin/nologin \ --shell /usr/sbin/nologin \
nextjs \ nextjs \
&& setcap 'cap_net_bind_service=+ep' /usr/local/bin/node && setcap 'cap_net_bind_service=+ep' \
/usr/local/bin/node
COPY --from=builder \ COPY --from=builder \
--chown=nextjs:nodejs \ --chown=nextjs:nodejs \