Files
apps-registry/workloads/ecommerce/Dockerfile
T
devops 0cd4b89cfa
Build and Push Frontend / build (push) Failing after 21m34s
Update workloads/ecommerce/Dockerfile
2026-07-20 03:22:42 +00:00

97 lines
2.1 KiB
Docker

# syntax=docker/dockerfile:1.7
ARG NODE_IMAGE=node:24.18.0-bookworm-slim
# ============================================================
# Dependencias
# ============================================================
FROM ${NODE_IMAGE} AS deps
WORKDIR /app
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
# ============================================================
# 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 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 \
--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 \
CMD wget -qO- http://127.0.0.1/api/health || exit 1
CMD ["node", "server.js"]