よく行うことの1つは、DockerイメージをビルドするときにすべてのソースコードをDockerfile
にパッケージ化することです。
ADD . /app
.git
ディレクトリを簡単な方法で含めないようにするにはどうすればよいですか?
ADD [^.]* /app/
を使用してこれを処理するUnixの方法を試しました
完全なサンプル:
docker @ boot2docker:/ mnt/sda1/tmp/abc $ find。 。 ./ c ./。git ./ Dockerfile ./ good ./ good/a1 docker @ boot2docker:/ mnt/sda1/tmp/abc $ cat Dockerfile FROM ubuntu ADD [^。] * /app/ docker@boot2docker:/mnt/sda1/tmp/abc$ docker build -t abc。 ビルドコンテキストをDockerデーモンに送信4.096 kB ビルドコンテキストをDockerデーモンに送信 ステップ0:ubuntu から---> 04c5d3b7b065 ステップ1:[^。] */app /を追加 d ---> 5d67603f108b 中間コンテナを削除しますabc root @ 1b1705dd66a2:/#ls -l app total 4 -rw-r--r-- 1 1000スタッフ30 Jan 22 01:18 Dockerfile -rw-r--r-- 1ルートルート0 Jan 22 01:03 a1 -rw-r--r-- 1ルートルート0 Jan 22 00:10 c
第二に、good\a1
がa1
に変更されるため、ディレクトリ構造が失われます。
Dockerの関連ソースコードは https://github.com/docker/docker/blob/eaecf741f0e00a09782d5bcf16159cc8ea258b67/builder/internals.go#L115
。dockerignore file を使用して、不要なファイルを除外できます。
どうすれば簡単に.gitディレクトリを含めないようにできますか?
次の行を使用して、ルートコンテキストフォルダーに.dockerignore
というファイルを作成するだけです。
**/.git
**/node_modules
このような行を使用すると、Dockerは、ルートを含むサブディレクトリから.git
およびnode_modules
ディレクトリを除外します。 Dockerは、任意の数のディレクトリ(ゼロを含む)に一致する特別なワイルドカード文字列**
もサポートしています。
次に、good\a1がa1に変更されるため、ディレクトリ構造が失われます。
.dockerignoreでは、
$ docker run -it --rm sample tree /opt/
/opt/
├── Dockerfile
├── c
│ └── no_sslv2.patch
└── good
└── a1
└── README
3 directories, 3 files
公式ドキュメントへの参照: 。dockerignore
ルートディレクトリに。dockerignoreファイルを追加します(。gitignoreファイルのような構文)