Pega reglas y rutas para revisar el contexto de compilación esperado. El análisis de texto no lee tu repositorio ni ejecuta Docker.
Se ejecuta localmente en tu navegadorEl recuadro izquierdo recibe el contenido de un archivo .dockerignore y el derecho las rutas candidatas, una por línea, tal como aparecen dentro de la raíz del contexto de compilación. Al pulsar Probar contexto de compilación cada ruta recibe un veredicto: excluida o incluida, con la regla que lo decidió y una nota cuando la coincidencia vino de una carpeta superior. La columna derecha muestra además la lista normalizada de reglas, es decir, las líneas que Docker lee de verdad, y un informe de los riesgos habituales del contexto.
.dockerignore indica al cliente de Docker qué archivos quedan fuera del contexto de compilación, el árbol que se envía al daemon y que ADD y COPY pueden ver. Esta página solo lee ese texto: no abre tu repositorio, no recorre una carpeta de contexto real y no ejecuta ninguna compilación. Todo lo que sigue describe las reglas de coincidencia que aplica la página, que siguen la implementación que usa Docker.
El lector elimina el BOM UTF-8 de la primera línea, ignora las líneas cuyo primer carácter es # y salta las vacías; un # que solo aparece tras espacios es un patrón, no un comentario. Cada línea restante se recorta, un ! inicial marca una excepción y el resto se limpia como una ruta: ./x pasa a x, a//b a a/b, a/../b a b, foo/ a foo. Después se quita una barra inicial, así que /foo y foo son el mismo patrón. Una línea que solo contiene ! es un error: Docker se detiene con «illegal exclusion pattern».
Los patrones que no sobreviven a esa limpieza se avisan antes de que empiece una compilación: una clase [ sin cerrar, un ] o un - mal colocados dentro de una clase, o un patrón que termina en barra invertida. La página indica el número de línea y el texto exacto en lugar de repetir el archivo en silencio.
Cada candidata se compara con los patrones de arriba abajo y decide el último que coincide, así que una excepción posterior puede deshacer una exclusión anterior. El patrón se compara con la ruta completa respecto a la raíz del contexto: *.md cubre los markdown de la raíz y **/*.md cubre cualquier profundidad. Un * o un ? no cruzan la barra /, ** sí cruza directorios (a/**/b también coincide con a/b, y **/foo también con un foo de la raíz), [0-9] y [^a-z] son clases de caracteres y la barra invertida escapa el carácter siguiente.
Un patrón también decide por todo lo que hay dentro de una carpeta con la que coincide: por eso node_modules excluye node_modules/react/index.js, y los resultados lo dicen con la nota de carpeta superior. Como solo cuenta la última regla que coincide, una línea ! a la que se llega sin nada excluido no recupera nada, y el informe enumera esas líneas inútiles.
Los veredictos son de texto. La página nunca recorre tu repositorio, así que un archivo que no esté en la lista de candidatas no se examina, y la lista es una muestra y no el contexto real. Las versiones de Docker difieren ligeramente al transferir y filtrar contextos, por lo que conviene volver a comprobar un patrón poco habitual con el cliente con el que compilas.
.dockerignore solo determina lo que el cliente envía al daemon. No crea capas de imagen por sí mismo, no afecta a los montajes en tiempo de ejecución y no cambia qué archivos copia una instrucción COPY o ADD: un archivo que permanece en el contexto se puede copiar, y uno excluido hace fallar un COPY cuando el Dockerfile lo espera. Revisa también las rutas de copia.