Saltar al contenido principal

🚀 Evitar meter archivos innecesarios con .dockerignore

Una de las diferencias entre alguien que simplemente utiliza Docker y alguien que realmente conoce cómo funciona es prestar atención al contexto de construcción.

Cuando ejecutas un docker build, Docker envía todos los archivos del proyecto al proceso de construcción, salvo aquellos que le indiques que ignore.

Para ello existe un archivo muy importante:

.dockerignore

Su función es muy similar a la de .gitignore, pero aplicado exclusivamente al proceso de construcción de imágenes Docker.

📦 ¿Qué hace .dockerignore?

Este archivo permite excluir archivos y carpetas del contexto que Docker envía durante la build.

Esto aporta varias ventajas:

  • Reduce el tamaño del contexto de construcción.
  • Hace que las builds sean más rápidas.
  • Evita copiar archivos innecesarios dentro de la imagen.
  • Reduce posibles errores derivados de archivos locales.

⚡ Un ejemplo muy común: node_modules

Uno de los errores más habituales es copiar la carpeta node_modules al contenedor.

Por ejemplo, si tu Dockerfile ya ejecuta:

RUN npm install

o

RUN npm ci

no tiene sentido copiar también los módulos instalados localmente.

Por eso es habitual incluir en .dockerignore:

node_modules

De esta forma, cuando Docker ejecuta un COPY . ., simplemente ignorará esa carpeta.

📝 Otros archivos que normalmente conviene ignorar

Además de node_modules, también suele ser recomendable excluir archivos que no aportan nada a la imagen final, como por ejemplo:

  • .git
  • .gitignore
  • archivos de documentación (*.md)
  • .DS_Store
  • configuraciones del editor (como .vscode)
  • otros archivos temporales o propios del entorno de desarrollo.

⚠️ Evita errores entre sistemas operativos

Ignorar node_modules no solo mejora el rendimiento.

También evita uno de los errores más frecuentes cuando se trabaja con Docker.

Si desarrollas en macOS o Windows y copias tus dependencias locales dentro de una imagen basada en Linux, algunas dependencias nativas pueden dejar de funcionar correctamente.

Esto ocurre porque ciertos paquetes contienen binarios compilados específicamente para el sistema operativo donde fueron instalados.

La solución es sencilla:

Nunca copies tus node_modules locales al contenedor. Deja que Docker instale las dependencias dentro de la propia imagen.

📌 Ideas clave de esta clase

Quédate con estos conceptos:

  • .dockerignore funciona de forma similar a .gitignore.
  • Excluye archivos del contexto de construcción de Docker.
  • Reduce el tiempo de las builds.
  • Evita incluir archivos innecesarios dentro de la imagen.
  • node_modules casi siempre debería ignorarse.
  • También es recomendable excluir carpetas como .git, .vscode y archivos temporales.
  • Evitar copiar dependencias locales previene errores entre distintos sistemas operativos.

🚀 Buenas prácticas desde el primer día

Aunque pueda parecer un detalle menor, mantener un buen archivo .dockerignore es una de las prácticas que más impacto tiene en proyectos reales.

Con unas pocas líneas puedes conseguir imágenes más limpias, builds más rápidas y evitar errores difíciles de diagnosticar cuando despliegas tu aplicación en otros entornos.