7.3.3. ビルドコンテキスト

Dockerでイメージをビルドする際には、ビルドコンテキストとなるディレクトリを指定します。Red Hat Quayで行われるビルドは、自分のマシンでdocker buildを実行するのと変わらないので、これは手動ビルドとビルドトリガーの両方に当てはまります。

Red Hat Quay のビルドコンテキストは、常にビルドセットアップから指定されたサブディレクトリであり、指定されていない場合はビルドソースのルートにフォールバックします。ビルドがトリガーされると、Red Hat Quay のビルドワーカーは git リポジトリをワーカーマシンにクローンし、ビルドを行う前にビルドコンテキストに入ります。

tar アーカイブをベースにしたビルドでは、ビルドワーカーがアーカイブを抽出し、ビルドコンテキストに入ります。例:

example
├── .git
├── Dockerfile
├── file
└── subdir
    └── Dockerfile

上の例が、"example"という名前のGitHubリポジトリのディレクトリ構造だと想像してみてください。ビルドトリガーの設定でサブディレクトリが指定されていない場合や、手動でビルドを開始した場合は、exampleディレクトリでビルドを行います。

ビルドトリガーの設定でサブディレクトリとしてsubdirを指定した場合、その中のDockerfileのみがビルドの対象になります。つまり、DockerfileのADDコマンドを使ってファイルを追加することは、ビルドコンテキストの外にあるためできません。

Docker Hubとは異なり、DockerfileはRed Hat Quayのビルドコンテキストの一部です。そのため、.dockerignoreファイルに表示されてはいけません。