¿Imágenes Docker que ocupan gigas? ¡Un problema común!

Si alguna vez te has enfrentado a imágenes de Docker que parecen crecer sin control, sabes lo frustrante que puede ser. Espacio en disco, tiempos de descarga y despliegue lentos, todo contribuye a una experiencia de desarrollo y producción menos que óptima. ¡Pero no te preocupes! En Nubettix.mx, te traemos 3 trucos sencillos para que tus imágenes Docker sean ligeras como plumas.

Truco 1: Elige la imagen base correcta

La elección de tu imagen base es crucial. Evita las imágenes completas (como ubuntu:latest) si solo necesitas un entorno mínimo. Opta por distribuciones Alpine Linux. Son significativamente más pequeñas y contienen solo lo esencial. ¡Menos es más!

# Ejemplo: De una imagen pesada a Alpine
# Antes:
# FROM ubuntu:latest
# DESPUÉS:
FROM alpine:latest

Truco 2: Usa multi-stage builds

Este es un game-changer. Permite usar una imagen para compilar tu aplicación y otra imagen mucho más ligera para ejecutarla. Los archivos intermedios y las herramientas de compilación se quedan fuera de la imagen final.

# Ejemplo de multi-stage build para Go
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .

FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]

Truco 3: Limpia después de instalar

Muchas veces, después de instalar paquetes o dependencias, dejamos archivos temporales o cachés que no necesitamos en la imagen final. ¡Límpialos!

# Ejemplo de limpieza en Debian/Ubuntu
RUN apt-get update && apt-get install -y --no-install-recommends \ 
    some-package \ 
    another-package \ 
    # Limpia la caché de apt después
    && rm -rf /var/lib/apt/lists/*

# Ejemplo de limpieza en Alpine
RUN apk update && apk add --no-cache \ 
    some-package \ 
    another-package

¡Ponlo en práctica!

Implementar estos trucos te ayudará a reducir drásticamente el tamaño de tus imágenes Docker, acelerando tus despliegues y optimizando el uso de recursos. ¡Feliz contención!