Une des choses que nous faisons souvent consiste à empaqueter tout le code source dans Dockerfile
lorsque nous construisons une image Docker.
ADD . /app
Comment pouvons-nous éviter d'inclure le .git
répertoire de manière simple?
J'ai essayé la façon Unix de gérer cela en utilisant ADD [^.]* /app/
Échantillon complet:
docker @ boot2docker:/mnt/sda1/tmp/abc $ find. . ./ c ./. git ./ Dockerfile ./ good ./ good/a1 Docker @ boot2docker:/mnt/sda1/tmp/abc $ cat Dockerfile DE ubuntu AJOUTER [^.] * /App/ docker@boot2docker:/mnt/sda1/tmp/abc$ docker build -t abc. Envoi du contexte de construction au démon Docker 4,096 kB Envoi du contexte de construction au démon Docker Étape 0: DE ubuntu ---> 04c5d3b7b065 Étape 1: AJOUTER [^.] */App/ d ---> 5d67603f108b Supprimer le conteneur intermédiaire 60159dee6ac8 Construit avec succès 5d67603f108b docker @ boot2docker:/mnt/sda1/tmp/abc $ docker run -it abc root @ 1b1705dd66a2:/# ls -l app total 4 - rw-r - r-- 1 1000 membres du personnel 30 janvier 22 01:18 Dockerfile - rw-r - r-- 1 racine racine 0 22 janvier 01:03 a1 - rw-r - r-- 1 racine racine 0 22 janvier 01 00:10 c
Et deuxièmement, il perdra la structure de répertoires, puisque good\a1
se change en a1
.
Le code source associé dans Docker est https://github.com/docker/docker/blob/eaecf741f0e00a09782d5bcf16159cc8ea258b67/builder/internals.go#L115
Vous pouvez exclure des fichiers indésirables à l’aide du fichier . Dockerignore
Comment pouvons-nous éviter d'inclure le répertoire .git de manière simple?
Il suffit de créer un fichier nommé .dockerignore
dans le dossier du contexte racine avec les lignes suivantes
**/.git
**/node_modules
Avec de telles lignes, Docker exclura les répertoires .git
et node_modules
de n’importe quel sous-répertoire, y compris root. Docker prend également en charge une chaîne générique spéciale **
qui correspond à n’importe quel nombre de répertoires (y compris zéro).
Et deuxièmement, il perdra la structure de répertoires, car bon\a1 sera changé en a1
Avec .dockerignore ce ne sera pas
$ docker run -it --rm sample tree /opt/
/opt/
├── Dockerfile
├── c
│ └── no_sslv2.patch
└── good
└── a1
└── README
3 directories, 3 files
Référence à la documentation officielle: . Dockerignore
Ajoutez le fichier . Dockerignore dans votre répertoire racine (syntaxe similaire au fichier . Gitignore)