Herramienta
Docker
Empaquetado de aplicaciones como contenedores reproducibles; Dockerfile, multi-stage builds y composición con docker-compose.
Puntos clave
- ▸Imagen vs contenedor: la imagen es una plantilla inmutable; el contenedor es una instancia en ejecución de esa imagen.
- ▸Multi-stage builds (FROM build AS ... + FROM runtime) descartan el toolchain y reducen el tamaño final.
- ▸Cada RUN / COPY crea una capa cacheable; ordenar de menos a más volátil acelera los rebuilds.
- ▸.dockerignore evita copiar node_modules, .git y secretos al build context.
- ▸Networks: bridge (default), host (alto throughput sin aislamiento), custom para microservicios con DNS interno.
- ▸Compose declara servicios + volúmenes + redes en un solo YAML reproducible para entornos locales.
Código
FROM node:22-alpine AS build
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack enable && pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
FROM node:22-alpine AS runtime
WORKDIR /app
COPY --from=build /app/.next ./.next
COPY --from=build /app/public ./public
COPY --from=build /app/package.json ./
EXPOSE 3000
CMD ["pnpm", "start"]
Build multi-stage para un Next.js: el toolchain queda fuera del runtime.