¿Tu contenedor de Docker pesa gigas?

Todos hemos estado ahí: construyes tu aplicación, la empaquetas en Docker y de repente, ¡boom! Tu imagen pesa varios gigabytes. Esto no solo ralentiza las descargas y despliegues, sino que también aumenta los costos de almacenamiento. ¡Es hora de poner tu imagen Docker a dieta! En Nubettix te damos 3 trucos infalibles para adelgazar esas bestias.

1. Usa Imágenes Base Mínimas

La base lo es todo. Empieza con imágenes oficiales que sean lo más pequeñas posible. Para la mayoría de aplicaciones, Alpine Linux es tu mejor amigo. Es una distribución Linux mínima que viene con lo esencial, ¡y reduce drásticamente el tamaño de tu imagen base!

# En lugar de
# FROM ubuntu:latest

# Usa Alpine
FROM python:3.9-alpine

2. Combina y Minimiza tus Capas (Multi-RUN)

Cada instrucción en tu Dockerfile crea una capa. Si ejecutas varios comandos RUN por separado, acumulas capas innecesarias. Combínalos usando && y limpia los cachés después de instalar dependencias.

# Mal ejemplo (muchas capas)
RUN apt-get update
RUN apt-get install -y some-package
RUN rm -rf /var/lib/apt/lists/*

# Buen ejemplo (una sola capa y limpieza)
RUN apt-get update && \
    apt-get install -y --no-install-recommends some-package && \
    rm -rf /var/lib/apt/lists/*

Para lenguajes como Node.js o Python, asegúrate de limpiar los cachés de `npm` o `pip` si los usas.

3. Aprovecha el Multi-Stage Builds

Esta es la joya de la corona. Usa una imagen para construir tu aplicación (con todas las herramientas de compilación, SDKs, etc.) y otra imagen mínima para ejecutarla. Solo copias los artefactos necesarios a la imagen final.

# Imagen de construcción
FROM node:16 as builder
WORKDIR /app
COPY . .
RUN npm install --production
RUN npm run build

# Imagen final mínima
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

¡Con estos trucos, tus imágenes Docker serán ligeras, rápidas y amigables con tu bolsillo!