ビルド可能なサービスを無視してサービスイメージを取得する
このステップでは、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
フラグを使用することで、事前ビルド済みイメージのみを選択的に取得できることがわかりました。これは様々な開発やデプロイメントのシナリオで役立ちます。