2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.dockerignoreの配置場所

Posted at

.dockerignoreの配置場所

コンテナで環境構築する際も、本番稼働用のDockerfileを作る際にも.dockerignoreは基本的に用意すると思います。

その中で、いろんなシチュエーションにおいて.dockerignoreは機能するのか?
適切な配置場所は?
と気になったのでいくつかのパターンで検証してみました。

結論

いくつか試した結論として、dockerのbuild contextのルートにあればどの状況でも効くようです。

build contextって何?って人はこちらを参考に。

Docker関連ファイルの内容

どのパターンの検証も基本的に内容は一緒です。(一部場合によって変えます。)
開発環境の構築においてはdocker composeを利用することが多いと思いますので、compose前提です。

Dockerfile

FROM busybox

WORKDIR /workspace
COPY *.txt .

compose.yaml

services:
  sample:
    build:
      context: .
      dockerfile: Dockerfile
    image: docker-ignore-test-sample
    container_name: docker-ignore-test-sample

.dockerignore

mushi.txt

さらにルートディレクトリに以下の2つのファイルを置いて、not_mushi.txtだけが存在すればOKという検証をします。

  • mushi.txt
  • not_mushi.txt

確認のためのコマンド

docker compose run sample ls

検証

パターン1: すべてルートディレクトリに

最も標準的な構成。

【ディレクトリ構成】

.
├── .dockerignore
├── compose.yaml
├── Dockerfile
├── mushi.txt
└── not_mushi.txt

【結果】

$ docker compose run sample ls
not_mushi.txt

もちろんOK!

パターン2: Docker関連ファイルをサブディレクトリに配置

ルートを散らかしたくないという人だとこういう構成をとる場合もあると思います。
重要なのは.dockerignoreがcontextのルートにいる必要があるということ。

【ディレクトリ構成】

.
├── .dockerignore
├── docker
│   ├── Dockerfile
│   └── compose.yaml
├── mushi.txt
└── not_mushi.txt

【結果】

$ docker compose run sample ls
not_mushi.txt

OK!

また、このパターンではcompose.yamlを以下のようにしてcontextをルートディレクトリに移動しています。

services:
  sample:
    build:
      context: .. # ここを変更!
      dockerfile: docker/Dockerfile # ここを変更!
    image: docker-ignore-test-sample
    container_name: docker-ignore-test-sample

パターン3: VSCode DevContainerの利用

サブディレクトリ切る版にさらにdevcontainerの設定を追加。

【ディレクトリ構成】

.
├── .devcontainer
│   └── devcontainer.json
├── .dockerignore
├── docker
│   ├── Dockerfile
│   └── compose.yaml
├── mushi.txt
└── not_mushi.txt

【結果】

image.png

ばっちり。

おわりに

結論は上に書いた通りで、単純でした。

docker関連ファイルをディレクトリ切って格納したい人からするとルートに.dockerignoreだけ置かなければいけないのは気持ち悪いかもしれませんが、これは仕方ないですね。

まあだからこそ "." から始まるようになっているのかもしれません。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?