Skip to content

Archivo .dockerignore

Este archivo es análogo a .gitignore pero para Docker. Le dice al comando docker build qué archivos y directorios no debe copiar al contexto de construcción de la imagen.

  • Descripción: .dockerignore es un archivo de texto plano que lista patrones de archivos y carpetas que deben ser ignorados por el cliente de Docker al enviar los archivos del contexto de construcción al demonio de Docker. Su objetivo es reducir el tamaño de la imagen final y acelerar el proceso de construcción, excluyendo elementos no esenciales o temporales.
  • Propósito:
    • Optimización del Tamaño de la Imagen: Evita copiar archivos innecesarios (como node_modules, cachés de desarrollo, variables de entorno locales, control de versiones) a la imagen final de Docker, lo que puede reducir drásticamente su tamaño.
    • Aceleración de la Construcción: Menos archivos para copiar significan transferencias de contexto más rápidas entre tu máquina y el demonio de Docker, resultando en una construcción de imagen más veloz.
    • Seguridad: Previene que archivos sensibles (como archivos .env con credenciales o configuraciones locales de desarrollo) se incluyan accidentalmente en la imagen de producción.
    • Caché de Capas de Docker: Ayuda a asegurar que las capas de Docker solo se invaliden cuando cambian archivos verdaderamente relevantes, optimizando el uso de la caché de construcción de Docker.
  • Contenido Clave Actualizado:
    • node_modules: Excluye la carpeta de dependencias de Node.js, ya que estas se reinstalarán dentro del contenedor Docker para asegurar un entorno de ejecución limpio y consistente.
    • build/: Excluye la carpeta build si tu proceso de compilación frontend genera artefactos ahí.
    • .env: Excluye los archivos de variables de entorno locales, que a menudo contienen credenciales o configuraciones específicas del entorno de desarrollo. Para producción, las variables de entorno se gestionan de otra manera (ej., secretos de Docker, Kubernetes).
    • .git/: Excluye el directorio de control de versiones Git, el cual no es necesario en la imagen final.
    • .vscode/: Excluye configuraciones del editor VS Code.
    • *.log, npm-debug.log*, yarn-debug.log*, yarn-error.log*: Ignora varios tipos de archivos de log que no son relevantes para la ejecución en producción.
    • *.tgz: Excluye archivos de paquetes comprimidos que pueden quedar de instalaciones o procesos de empaquetado.
    • coverage/: Excluye los informes de cobertura de tests.
    • .DS_Store: Excluye archivos específicos de macOS.
  • Rol en el Proyecto: .dockerignore es fundamental para construir imágenes Docker eficientes, seguras y limpias de tu aplicación frontend. Al excluir dependencias ya instaladas localmente y archivos temporales/de desarrollo, garantiza que la imagen de producción contenga solo lo esencial, mejorando el rendimiento del despliegue y el uso de recursos.
bash
# .dockerignore

# Excluye la carpeta de módulos de Node, ya que las dependencias
# se reinstalarán dentro del contenedor Docker durante la construcción.
node_modules

# Excluye directorios y archivos generados durante el desarrollo o la compilación.
build/       # Si tu proceso de build genera una carpeta 'build' además de 'dist'
.env         # Archivos de variables de entorno (especialmente si contienen secretos)
.git/        # Directorio de control de versiones
.vscode/     # Configuraciones del editor Visual Studio Code
npm-debug.log* # Logs de depuración de npm
yarn-debug.log* # Logs de depuración de yarn
yarn-error.log* # Logs de error de yarn
.DS_Store    # Archivos específicos de macOS
*.log        # Cualquier otro archivo de log
*.tgz        # Archivos de paquetes comprimidos
coverage/    # Directorio con informes de cobertura de tests