2015-01-22 8 views
27

HINZUFÜGEN Einer der Dinge, die wir oft tun, ist, alle Quellcode in Dockerfile zu verpacken, wenn wir ein Docker-Bild erstellen.Wie alle Dateien/Verzeichnisse außer einem versteckten Verzeichnis wie .git in Dockerfile

ADD . /app 

Wie können wir vermeiden, das Verzeichnis .git in einfacher Weise zu integrieren?

habe ich versucht, den Unix-Weg

komplette Probe dies mit ADD [^.]* /app/ der Handhabung:

 
[email protected]:/mnt/sda1/tmp/abc$ find . 
. 
./c 
./.git 
./Dockerfile 
./good 
./good/a1 
[email protected]:/mnt/sda1/tmp/abc$ cat Dockerfile 
FROM ubuntu 

ADD [^.]* /app/ 
[email protected]:/mnt/sda1/tmp/abc$ docker build -t abc . 
Sending build context to Docker daemon 4.096 kB 
Sending build context to Docker daemon 
Step 0 : FROM ubuntu 
---> 04c5d3b7b065 
Step 1 : ADD [^.]* /app/ 
d ---> 5d67603f108b 
Removing intermediate container 60159dee6ac8 
Successfully built 5d67603f108b 
[email protected]:/mnt/sda1/tmp/abc$ docker run -it abc 
[email protected]:/# ls -l app 
total 4 
-rw-r--r-- 1 1000 staff 30 Jan 22 01:18 Dockerfile 
-rw-r--r-- 1 root root 0 Jan 22 01:03 a1 
-rw-r--r-- 1 root root 0 Jan 22 00:10 c 

Und zweitens, es wird die Verzeichnisstruktur verlieren, da good\a1 zu a1 geändert wird.

Verwandte Quellcode in Docker ist https://github.com/docker/docker/blob/eaecf741f0e00a09782d5bcf16159cc8ea258b67/builder/internals.go#L115

Antwort

10

Wie können wir mit dem .git Verzeichnis auf einfache Weise vermeiden?

Erstellen Sie einfach eine Datei .dockerignore im Root-Kontextordner mit den folgenden Zeilen genannt

**/.git 
**/node_modules 

Mit einer solchen Linien Docker werden Verzeichnisse .git und node_modules von jedem Unterverzeichnis einschließlich Root auszuschließen. Docker unterstützt auch eine spezielle Platzhalterzeichenfolge **, die mit einer beliebigen Anzahl von Verzeichnissen (einschließlich Null) übereinstimmt.

Und zweitens, es wird die Verzeichnisstruktur verlieren, da eine gute \ a1

Mit A1 .dockerignore wird es nicht

$ docker run -it --rm sample tree /opt/ 
/opt/ 
├── Dockerfile 
├── c 
│   └── no_sslv2.patch 
└── good 
    └── a1 
     └── README 

3 directories, 3 files 

Verweis auf offizielle Dokumente geändert wird: .dockerignore

0

Fügen Sie .dockerignore Datei in Ihrem Stammverzeichnis hinzu (Syntax wie .gitignore Datei)

Verwandte Themen