docker compose¶
補足説明¶
Docker コンテナ内で複数のサービスを構築・管理するため、compose サブコマンドを docker compose [-f <arg>...] [options] [COMMAND] [ARGS...]
ように使えます。
-f
で Compose ファイルの名前やパスを指定¶
-f
フラグを使い、Compose 設定ファイルの場所を指定します。
複数の Compose ファイルを指定¶
複数の -f
設定ファイルを追加指定できます。複数のファイルを指定すると、 Compose が1つの設定の中にそれらを統合します。指定したファイル順の設定で、 Compose が構築します。後続のファイルは、事前の処理を上書き・追加します。
たとえば、このコマンド行を見てみます。
$ docker compose -f docker-compose.yml -f docker-compose.admin.yml run backup_db
docker-compose.yaml
ファイルは、 webapp
サービスを指定しようとします。
services:
webapp:
image: examples/web
ports:
- "8000:8000"
volumes:
- "/data"
もしも docker-compose.admin.yml
でも同じ名前のサービスを定義すると、以前のファイルで定義されていた同じ名前のフィールドは、すべて上書きされます。
services:
webapp:
build: .
environment:
- DEBUG=1
複数の Compose ファイルを使う場合、全てのパスは、 -f
で指定した1番目の設定ファイルからの相対パスになります。この基準となるパスは、 --project-directory
オプションを使って上書きできます。
-f
にファイル名の代わりに -
(ダッシュ)を使うと、標準入力から設定を読み込みます。標準入力からの設定に含まれる全てのパスは、現在の作業ディレクトリからの相対パスです。
-
フラグはオプションです。このフラグをコマンドライン上で使わなければ、 Compose は作業ティレクトリと親ディレクトリを行き来し、 compose.yaml
や docker-compose.yaml
ファイルを探します。
Compose ファイルのパスを指定¶
-f
フラグを使い、Compose ファイルのパスを指定できます。このファイルのパスとは、現在のディレクトリに存在していなくても、コマンドラインでパスを指定するか、あるいはシェル上の COMPOSE_FILE
環境変数 もしくは environment ファイル内で指定できます。
コマンドライン上で -f
オプションを使う例として、Compose で Rails サンプルの実行を想定します。そして、 sandbox/rails
ディレクトリに compose.yaml
ファイルがあるとします。 docker compose pull
のようなコマンドを使うとき、次のように -f
フラグを使うと、あらゆる場所から db サービスに対する postgres イメージを取得できます。
$ docker compose -f ~/sandbox/rails/compose.yaml pull db
プロジェクト名を -p
を使い指定¶
各設定ファイルはプロジェクト名を持ちます。 -p
フラグを指定すると、プロジェクト名を指定できます。このフラグを指定しなければ、 Compose は現在のディレクトリ名をプロジェクト名として使います。プロジェクト名は COMPOSE_PROJECT_NAME
環境変数でも指定できます。
大部分の compose サブコマンドは、 compose ファイル無しでは実行できません。ですが、適切なリソースから情報を取得する場合は、プロジェクト名を渡すだけです。
$ docker compose -p my_project ps -a
NAME SERVICE STATUS PORTS
my_project_demo_1 demo running
$ docker compose -p my_project logs
demo_1 | PING localhost (127.0.0.1): 56 data bytes
demo_1 | 64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.095 ms
profile でオプションのサービスを有効化¶
--profile
を使い、1つまたは複数のアクティブなプロファイルを指定できます。 docker compose --profile frontend up
を実行すると、 プロファイル frontend
のサービスと、プロファイルを指定していないサービスを開始します。また、複数のプロファイルも指定できます。 docker compose --profile frontend --profile debug up
であれば、 frontend
と debug
が有効になります。
プロファイルは COMPOSE_PROFILES
環境変数でも指定できます。
環境変数でセットアップ¶
-f
、 -p
、 --profile
フラグを含む、様々な docker compose オプションを環境変数で指定できます。
COMPOSE_FILE
環境変数の設定は、 -f
フラグを渡すのと同じです。 COMPOSE_PROJECT_NAME
環境変数は、 -p
フラグを渡すのと同じです。さらに COMPOSE_PROFILES
環境変数は、 --profile
フラグを渡すのと同じです。
フラグが明示的に指定される場合は、関連する環境変数は無視されます。
オプション¶
名前, 省略形 |
デフォルト |
説明 |
---|---|---|
|
|
ANSI 制御文字の表示を制御( |
|
別の環境設定ファイルを指定 |
|
|
Compose 設定ファイル |
|
|
ANSI 制御文字を表示しません(非推奨) |
|
|
有効にするプロファイルを指定 |
|
|
別の作業ディレクトリを指定(デフォルト:Compose ファイルが存在するパス) |
|
|
プロジェクト名 |
|
|
詳細な出力 |
|
|
非推奨! かわりに --project-directory を使う。別の作業ディレクトリを指定(デフォルト:Compose ファイルが存在するパス) |
子コマンド¶
コマンド |
説明 |
---|---|
サービスの構築もしくは再構築 |
|
compose ファイルをプラットフォーム固有の形式に変換 |
|
サービス・コンテナとローカル・ファイルシステム間でファイルやフォルダをコピー |
|
サービス用のコンテナを作成 |
|
コンテナやネットワークの停止と削除 |
|
コンテナからリアルタイムにイベントを受信 |
|
実行中のコンテナ内でコマンドを実行 |
|
作成したコンテナが使っているイメージを一覧表示 |
|
サービスコンテナを強制停止 |
|
コンテナからの出力を表示 |
|
実行中の compose プロジェクトを一覧表示 |
|
サービスの一時停止 |
|
ポートを確保している公開ポートを表示 |
|
コンテナを一覧表示 |
|
サービスのイメージを取得 |
|
サービスのイメージを送信 |
|
コンテナの再起動 |
|
停止済みのサービス・コンテナを削除 |
|
サービスを一度限りのコマンドとして実行 |
|
サービスの開始 |
|
サービスの停止 |
|
実行中のプロセスを表示 |
|
サービスの一時停止を解除 |
|
コンテナの作成と開始 |
参考