Las imágenes Docker mal optimizadas pueden hacer que tus despliegues sean lentos, consuman demasiado espacio o incluyan vulnerabilidades innecesarias. En este artículo aprenderás a construir imágenes ligeras, seguras y listas para producción.
Índice
- Problemas de imágenes sin optimizar
- Uso de Multi-Stage Builds
- Minimizar capas y dependencias
- Buenas prácticas de seguridad
- Ejemplo de Dockerfile optimizado
Problemas comunes
- Imágenes de más de 1 GB con paquetes innecesarios
- Tiempo de build y despliegue excesivo
- Dependencias no usadas
- Riesgos de seguridad por paquetes antiguos
Multi-Stage Builds
Con las multi-stage builds puedes separar la fase de compilación de la fase de ejecución, generando imágenes más pequeñas.
FROM node:18 AS builder WORKDIR /app COPY . . RUN npm install && npm run build FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html
Esto evita incluir herramientas de desarrollo en la imagen final.
Minimizar capas y dependencias
- Usar imágenes base ligeras:
alpine
- Combinar comandos en una sola capa:
RUN apk add --no-cache git && rm -rf /var/cache/apk/*
Buenas prácticas de seguridad
- Usar usuarios no root en la imagen final
- Escanear imágenes con
trivy
- Eliminar archivos temporales y cachés
- Configurar
.dockerignore
para excluir archivos innecesarios
Ejemplo completo
FROM php:8.2-fpm-alpine WORKDIR /var/www/html COPY . . RUN docker-php-ext-install pdo pdo_mysql RUN adduser -D -g '' appuser USER appuser CMD ["php-fpm"]
Resultado: una imagen ligera, segura y lista para producción.
Conclusión
Optimizar imágenes Docker no solo mejora la velocidad de despliegue, sino que también reduce riesgos y costos de infraestructura. Es un paso esencial en cualquier estrategia DevOps para ecommerce.
¿Quieres que optimicemos tus imágenes Docker y CI/CD? Contáctanos.