Testeur de règles .dockerignore

Collez règles et chemins pour examiner le contexte de build attendu. L’analyse textuelle ne lit pas le dépôt et ne lance aucun build Docker.

Fonctionne localement dans votre navigateur
Tout dans cet outil est traité dans ce navigateur. VoriTools ne télécharge pas, ne stocke pas et n’appelle aucune API tierce avec votre entrée.
Règles et chemins candidatsLes modèles et les chemins sont évalués localement sous forme de texte ; VoriTools ne lit jamais votre référentiel ou le contexte Docker.

Comment tester des règles .dockerignore sur des chemins candidats

Le champ de gauche reçoit le contenu d’un fichier .dockerignore, celui de droite les chemins candidats, un par ligne, tels qu’ils apparaissent dans la racine du contexte de construction. Après un clic sur Tester le contexte de build, chaque chemin reçoit un verdict : exclu ou inclus, avec la règle qui a décidé et une mention lorsque la correspondance vient d’un dossier parent. La colonne de droite affiche aussi la liste normalisée des règles — les lignes que Docker lit vraiment — et un rapport sur les risques habituels du contexte.

Le fichier .dockerignore indique au client Docker quels fichiers sortent du contexte de construction, l’arborescence envoyée au démon et visible par ADD et COPY. Cette page ne lit que ce texte : elle n’ouvre pas votre dépôt, ne parcourt aucun dossier de contexte réel et ne lance aucune construction. Ce qui suit décrit les règles appliquées ici, qui suivent l’implémentation utilisée par Docker.

  1. Collez le fichier dans le champ Règles .dockerignore, un motif par ligne. Une ligne dont le premier caractère est # est un commentaire ; ! transforme la ligne en exception qui réintègre des fichiers.
  2. Listez dans Chemins candidats les chemins à vérifier, un par ligne, écrits comme dans le contexte : src/index.js, node_modules/react/index.js, .env.
  3. Cliquez sur Tester le contexte de build. Chaque candidat est étiqueté exclu ou inclus et la règle décisive est nommée — par exemple « exclu · motif : node_modules (dossier parent) » lorsque la correspondance vient d’un dossier situé au-dessus du fichier.
  4. Lisez le champ .dockerignore normalisé : les commentaires et les lignes vides disparaissent, ./x, a//b, a/../b et une barre finale sont nettoyés, une barre initiale est supprimée ; ce que vous voyez est ce que Docker lit.
  5. Parcourez la liste de résultats pour les risques habituels — .git, node_modules, .env et clés privées, règles qui attrapent tout, règles sans correspondance — puis revérifiez un motif inhabituel avec la version de Docker que vous utilisez, car la liste de chemins n’est qu’un échantillon du contexte réel.

Comment Docker lit le fichier, comment les motifs s’appliquent et ce que cette page ne voit pas

Comment le fichier est lu

Le lecteur retire le BOM UTF-8 de la première ligne, ignore les lignes dont le premier caractère est # et saute les lignes vides ; un # qui n’apparaît qu’après des espaces est un motif, pas un commentaire. Chaque ligne restante est rognée, un ! initial marque une exception, et le reste est nettoyé comme un chemin : ./x devient x, a//b devient a/b, a/../b devient b, foo/ devient foo. Une barre initiale est ensuite retirée : /foo et foo sont donc le même motif. Une ligne réduite à ! est une erreur : Docker s’arrête sur « illegal exclusion pattern ».

Les motifs qui ne survivent pas à ce nettoyage sont signalés avant toute construction : une classe [ non fermée, un ] ou un - mal placés dans une classe, ou un motif terminé par une barre oblique inverse. La page indique le numéro de ligne et le texte fautif au lieu de répéter le fichier en silence.

Comment un motif correspond à un chemin

Chaque candidat est comparé aux motifs de haut en bas et le dernier motif correspondant décide : une exception plus bas peut donc annuler une exclusion plus haut. Le motif est comparé au chemin complet par rapport à la racine du contexte : *.md couvre les fichiers markdown de la racine, **/*.md toutes les profondeurs. Un * ou un ? ne franchit jamais la barre oblique, ** franchit les dossiers (a/**/b correspond aussi à a/b, et **/foo à un foo à la racine), [0-9] et [^a-z] sont des classes de caractères et la barre oblique inverse échappe le caractère suivant.

Un motif décide aussi pour tout ce qui se trouve dans un dossier auquel il correspond — c’est pourquoi node_modules exclut node_modules/react/index.js ; les résultats l’indiquent avec la mention du dossier parent. Comme seule la dernière règle correspondante compte, une ligne ! atteinte alors que rien n’est exclu ne réintègre rien, et le rapport liste ces lignes sans effet.

Ce que cette page ne voit pas

Les verdicts portent sur du texte. La page ne parcourt jamais votre dépôt : un fichier absent de la liste de candidats n’est jamais examiné, et cette liste est un échantillon, pas le contexte réel. Les versions de Docker diffèrent légèrement dans le transfert et le filtrage des contextes ; mieux vaut revérifier un motif inhabituel avec le client que vous utilisez.

.dockerignore ne détermine que ce que le client envoie au démon. Il ne crée pas de couches d’image à lui seul, n’affecte pas les montages à l’exécution et ne change pas ce qu’un COPY ou un ADD copie : un fichier resté dans le contexte peut être copié, et un fichier exclu fait échouer un COPY lorsque le Dockerfile compte sur lui. Vérifiez aussi les chemins de copie.

Outils récents :