🚀 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_moduleslocales al contenedor. Deja que Docker instale las dependencias dentro de la propia imagen.
📌 Ideas clave de esta clase
Quédate con estos conceptos:
.dockerignorefunciona 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_modulescasi siempre debería ignorarse.- También es recomendable excluir carpetas como
.git,.vscodey 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.