ビルド可能なサービスを除外してイメージを取得
このステップでは、docker compose pull コマンドで --ignore-buildable フラグを使用する方法を説明します。このフラグは、compose.yaml ファイルに Dockerfile からビルドするサービス(ビルド可能なサービス)と事前ビルド済みイメージを使用するサービスの両方が含まれている場合に便利です。--ignore-buildable フラグを指定すると、Docker Compose は image キーが指定されているサービスのみイメージを取得し、build キーが指定されているサービスはスキップします。
まず、compose.yaml ファイルを修正してビルド可能なサービスを含めます。基本的なイメージをビルドするシンプルなサービスを追加します。
~/project/my-compose-app ディレクトリにいることを確認してください。
cd ~/project/my-compose-app
次に、ビルド可能なサービスのためのシンプルな Dockerfile を作成します。
nano Dockerfile
以下の内容を Dockerfile に貼り付けます:
FROM alpine:latest
CMD ["echo", "Hello from buildable service!"]
ファイルを保存して nano エディタを終了します。
続いて、compose.yaml ファイルを修正してこの Dockerfile を使用する新しいサービスを追加します。
nano compose.yaml
db サービスの下に以下のサービス定義を追加します:
builder:
build: .
完成した compose.yaml ファイルは以下のようになります:
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: redis:latest
builder:
build: .
ファイルを保存して nano エディタを終了します。
それでは、docker compose pull --ignore-buildable を使用してイメージを取得してみましょう。
docker compose pull --ignore-buildable
Docker Compose が web と db サービスをチェックし、必要に応じてそれらのイメージを取得する様子が確認できます(前のステップですでに取得済みのはずです)。しかし、builder サービスは image キーではなく build キーを使用しているため無視されます。builder サービスに関連するビルドやイメージ取得の出力は表示されません。
builder サービスのイメージがビルドまたは取得されていないことを確認するには、Docker イメージをリスト表示します。
docker images
nginx と redis イメージのみが表示され、このコマンドによって Dockerfile から新しいイメージが作成されていないことがわかります。
このように、--ignore-buildable フラグを使用することで、事前ビルド済みイメージのみを選択的に取得できることがわかりました。これは様々な開発やデプロイメントのシナリオで役立ちます。