第12章 コンテナーイメージのビルド
コンテナーイメージをビルドするには、コンテナー化されたアプリケーションのブループリントを作成する必要があります。ブループリントは、アプリケーションのインストール方法と設定方法を定義する他のパブリックリポジトリーのベースイメージに依存します。
ブループリントは他のパブリックリポジトリーのイメージに依存しているため、レート制限の対象となる可能性があります。その結果、ビルドが失敗する 可能性があります。
Quay.io は、Docker および Podman コンテナーイメージを構築する機能をサポートしています。この機能は、コンテナーとコンテナーオーケストレーションを利用する開発者や組織に役立ちます。
Quay.io では、この機能は無料と有料の両方の階層プランで同じように機能します。
Quay.io は、1 人のユーザーが一度に送信できる同時ビルドの数を制限します。
12.1. ビルドコンテキスト
Docker または Podman でイメージをビルドする際には、ビルドコンテキスト となるディレクトリーを指定します。これは手動ビルドとビルドトリガーの両方に当てはまります。Quay.io によって作成されるビルドは、ローカルマシン上で docker build
または podman build
を実行することと変わらないためです。
Quay.io のビルドコンテキストは、常にビルドセットアップから指定された サブディレクトリー であり、ディレクトリーが指定されていない場合はビルドソースのルートにフォールバックします。
ビルドがトリガーされると、Quay.io のビルドワーカーは Git リポジトリーをワーカーマシンにクローンし、ビルドを行う前にビルドコンテキストに入ります。
.tar
アーカイブをベースにしたビルドでは、ビルドワーカーがアーカイブを抽出し、ビルドコンテキストに入ります。以下に例を示します。
展開されたビルドアーカイブ
example ├── .git ├── Dockerfile ├── file └── subdir └── Dockerfile
上記の 展開されたビルドアーカイブ は、example という Github リポジトリーのディレクトリー構造を持っていると考えてみてください。ビルドトリガーの設定でサブディレクトリーが指定されていない場合、またはビルドを手動で開始する場合、ビルドは example ディレクトリーで行われます。
ビルドトリガーの設定でサブディレクトリー (subdir
など) を指定した場合は、その中の Dockerfile のみがビルドの対象になります。つまり、Dockerfile の ADD
コマンドを使用して file
を追加することは、ビルドコンテキストの外にあるためできません。
Docker Hub とは異なり、Dockerfile は Quay.io のビルドコンテキストの一部です。そのため、Dockerfile を .dockerignore
ファイル内に含めることはできません。