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

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"]

Ejercicio Práctico Ninja 🥷

  1. Elige la tecnología principal de tu proyecto (Node, Python, Bun o Go).
  2. Adapta la plantilla correspondiente a tu repositorio.
  3. Compila y verifica el tamaño final de la imagen con docker images.