Saltar al contenido principal
MDev Env Pro
Curso: Docker para Devs43% Completado

En este módulo aprenderás:

  • Crea imágenes optimizadas con multi-stage builds, almacenamiento en caché de paquetes y .dockerignore.
  • Comandos y configuraciones clave para 03. Dockerfile Pro para Devs
  • Ejercicios prácticos listos para probar en tu terminal local

Escribir un Dockerfile Limpio y Rápido

Mano, un Dockerfile desordenado puede pesar 1.5 GB y tardar 10 minutos en compilar. Un Dockerfile optimizado pesa 100 MB y aprovecha la caché de capas para compilar en 3 segundos.

1. El Archivo .dockerignore (OBLIGATORIO)

Crea un archivo .dockerignore en la raíz de tu proyecto para evitar copiar node_modules o carpetas temporales a la imagen:

.dockerignoretext
node_modules
.git
.astro
dist
.env
*.log

2. Dockerfile Multi-Stage Pro (Node.js + pnpm)

Dockerfiledockerfile
# --- Etapa 1: Base de dependencias ---
FROM node:22-alpine AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable

WORKDIR /app
COPY package.json pnpm-lock.yaml ./

# --- Etapa 2: Instalación de dependencias ---
FROM base AS deps
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile

# --- Etapa 3: Build de producción ---
FROM base AS builder
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN pnpm run build

# --- Etapa 4: Runner liviano final ---
FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production

COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY package.json ./

EXPOSE 4321
CMD ["node", "dist/server/entry.mjs"]

Ejercicio Práctico Ninja 🥷

  1. Crea un .dockerignore en tu proyecto actual.
  2. Escribe el Dockerfile de tu aplicación.
  3. Compila la imagen ejecutando docker build -t mi-app:latest . y mide el tiempo de build.