From 0cd4b89cfaf6c0be220f28300a006b25a3910999 Mon Sep 17 00:00:00 2001 From: devops Date: Mon, 20 Jul 2026 03:22:42 +0000 Subject: [PATCH] Update workloads/ecommerce/Dockerfile --- workloads/ecommerce/Dockerfile | 93 ++++++++++++++++++++++++++++------ 1 file changed, 78 insertions(+), 15 deletions(-) diff --git a/workloads/ecommerce/Dockerfile b/workloads/ecommerce/Dockerfile index 1697e32..a7a351c 100644 --- a/workloads/ecommerce/Dockerfile +++ b/workloads/ecommerce/Dockerfile @@ -1,34 +1,97 @@ -FROM node:22-alpine AS deps -WORKDIR /app -COPY package.json package-lock.json ./ -RUN npm ci --no-audit --no-fund +# syntax=docker/dockerfile:1.7 + +ARG NODE_IMAGE=node:24.18.0-bookworm-slim + +# ============================================================ +# Dependencias +# ============================================================ +FROM ${NODE_IMAGE} AS deps -FROM node:22-alpine AS builder WORKDIR /app -ENV NEXT_TELEMETRY_DISABLED=1 + +ENV NEXT_TELEMETRY_DISABLED=1 \ + NPM_CONFIG_AUDIT=false \ + NPM_CONFIG_FUND=false \ + NPM_CONFIG_FETCH_RETRIES=5 \ + NPM_CONFIG_FETCH_RETRY_MINTIMEOUT=20000 \ + NPM_CONFIG_FETCH_RETRY_MAXTIMEOUT=120000 \ + NPM_CONFIG_FETCH_TIMEOUT=120000 \ + NPM_CONFIG_LOGLEVEL=warn + +COPY package.json package-lock.json ./ + +RUN --mount=type=cache,target=/root/.npm,sharing=locked \ + npm ci \ + --no-audit \ + --no-fund \ + --prefer-offline + +# ============================================================ +# Compilación Next.js +# ============================================================ +FROM ${NODE_IMAGE} AS builder + +WORKDIR /app + +ENV NEXT_TELEMETRY_DISABLED=1 \ + NODE_ENV=production + COPY --from=deps /app/node_modules ./node_modules COPY . . + RUN npm run build -FROM node:22-alpine AS runner +# ============================================================ +# Imagen final +# ============================================================ +FROM ${NODE_IMAGE} AS runner + WORKDIR /app + ENV NODE_ENV=production \ NEXT_TELEMETRY_DISABLED=1 \ HOSTNAME=0.0.0.0 \ PORT=80 -RUN apk add --no-cache libcap wget \ - && addgroup --system --gid 1001 nodejs \ - && adduser --system --uid 1001 nextjs \ +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + libcap2-bin \ + wget \ + && rm -rf /var/lib/apt/lists/* \ + && groupadd --system --gid 1001 nodejs \ + && useradd \ + --system \ + --uid 1001 \ + --gid nodejs \ + --create-home \ + nextjs \ && setcap 'cap_net_bind_service=+ep' /usr/local/bin/node -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 +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 80 -HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ + +HEALTHCHECK \ + --interval=30s \ + --timeout=5s \ + --start-period=20s \ + --retries=3 \ CMD wget -qO- http://127.0.0.1/api/health || exit 1 -CMD ["node", "server.js"] +CMD ["node", "server.js"] \ No newline at end of file