.dockerignore et .gitignore ont des noms similaires et des styles d'écriture similaires, j'ai donc pensé que je devrais les écrire de la même manière, mais ils étaient différents. Nous examinerons les différences dans cet article.
Les personnes qui ont écrit .gitignore mais qui n'ont pas beaucoup écrit .dockerignore
Les spécifications de .gitignore se trouvent dans la Page officielle de gitignore. En japonais, [Explication détaillée des spécifications .gitignore] de Qiita (https://qiita.com/anqooqie/items/110957797b3d5280c44f) est facile à comprendre.
Les spécifications de .dockerignore sont décrites dans docker build #dockerignore sur la page officielle.
Il existe trois règles principales.
--La règle Go language filepath.Match est utilisée pour la correspondance de modèles.
- Prend en charge les chaînes de caractères génériques spéciales «**». Cela correspond à plusieurs répertoires (y compris zéro). --Si vous commencez à écrire le début d'une ligne avec un point d'exclamation
!
, Cela spécifiera une exception à l'exclusion.
Avant d'expliquer la différence entre .dockerignore et .gitignore, parlons du transfert de fichiers et du rôle de .dockerignore lors de la construction de docker.
Lors de la création d'un Dockerfile, docker résume le contexte de construction et ci-dessous avec tar. Il s'agit de transférer le répertoire cible vers le démon docker. Ce tar contient également des fichiers qui ne sont pas COPY ou ADD. Il contient tous les fichiers sous le contexte de construction.
.dockerignore
Les fichiers qui ne sont pas nécessaires pour les builds de docker (que vous ne voulez pas mettre dans tar) doivent être répertoriés dans .dockerignore. La création d'un .dockerignore a pour effet de raccourcir le temps de construction, d'optimiser la taille de l'image du docker et d'éviter les fuites involontaires d'informations confidentielles (mots de passe, etc.).
La racine du contexte de construction est le chemin utilisé par la construction du docker. (Pas l'emplacement du Dockerfile)
docker build -f path/to/Dockerfile myprj
-----
↑ Le chemin spécifié dans l'argument de docker build est la racine du contexte de build ↑
Dans l'exemple ci-dessus, myprj
est la racine du contexte de construction. Dans l'exemple ci-dessus, .dockerignore est placé dans le répertoire myprj
.
Maintenant le sujet principal. .dockerignore et .gitignore sont similaires dans leur but et leur écriture, mais pas dans la même implémentation. Les spécifications sont également différentes.
.gitignore
Dans .gitignore, le nom du fichier ou du répertoire écrit est ignoré dans toute hiérarchie sous le fichier .gitignore.
Par exemple
.gitignore
target
Si vous écrivez
target
src/target
path/a/b/target
Etc. sont ignorés.
.dockerignore
Dans .dockerignore, tous les chemins sont relatifs au chemin où se trouve .dockerignore. [^ dockerignore_path]
[^ dockerignore_path]: Vous pouvez également préfixer le chemin avec /
comme avec .gitignore.
Par exemple
.dockerignore
target
Si vous écrivez
target
Seulement ignoré,
src/target
path/a/b/target
N'est pas ignoré.
Si vous souhaitez cibler une hiérarchie comme .gitignore
dockerignore
**/target
Il est décrit comme.
.gitignore
Pour .gitignore, vous pouvez également placer .gitignore dans un sous-répertoire. Dans ce cas, la règle la plus proche du fichier cible a la priorité.
.dockerignore
.dockerignore charge uniquement .dockerignore dans la racine du contexte de construction. Le fichier .dcokerignore situé dans le sous-répertoire ne sera pas lu.
Soyez prudent lorsque le répertoire Dockerfile et le contexte de construction sont différents. Au lieu de placer le .gitignore au même emplacement que le Dockerfile, placez le .dockerignore dans le contexte de construction.
Peut-être qu'il y a un peu plus de différence, mais jusqu'à présent, j'ai trouvé cette grande différence. Ayez une vie de docker confortable.
Recommended Posts