En este módulo aprenderás:
- Plantillas probadas en producción de Dockerfile y Docker Compose para Node.js, Python (uv), Bun y Go.
- Comandos y configuraciones clave para 06. Guides: Node, Python, Bun, Go
- Ejercicios prácticos listos para probar en tu terminal local
Dockerfiles de Producción para Cada Lenguaje
Causita, cada tecnología requiere pequeños trucos específicos para exprimir al máximo el rendimiento de Docker.
1. Python + UV (Ultra Rápido)
Dockerfile.pythondockerfile
FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim AS builder
ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy
WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN --mount=type=cache,target=/root/.cache/uv uv sync --frozen --no-install-project
COPY . /app
RUN --mount=type=cache,target=/root/.cache/uv uv sync --frozen
FROM python:3.13-slim
WORKDIR /app
COPY --from=builder /app /app
ENV PATH="/app/.venv/bin:$PATH"
CMD ["python", "main.py"]
2. Bun (JavaScript Runtime Instantáneo)
Dockerfile.bundockerfile
FROM oven/bun:1-alpine AS base
WORKDIR /app
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
COPY . .
EXPOSE 3000
CMD ["bun", "run", "index.ts"]
3. Go (Binarios Estáticos Nativos)
Dockerfile.godockerfile
FROM golang:1.23-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o /app/server .
# Imagen final Scratch (Pesa menos de 15 MB)
FROM scratch
COPY --from=builder /app/server /server
EXPOSE 8080
ENTRYPOINT ["/server"]
Scratch para binarios Go y Rust
Las imágenes compiladas desde scratch no contienen sistema operativo ni shell; solo contienen tu ejecutables. ¡Son ultra seguras porque no hay vulnerabilidades de bash ni paquetes del SO!
Ejercicio Práctico Ninja 🥷
- Elige la tecnología principal de tu proyecto (Node, Python, Bun o Go).
- Adapta la plantilla correspondiente a tu repositorio.
- Compila y verifica el tamaño final de la imagen con
docker images.