docker-compose CLI 概要

コマンドオプションの概要とヘルプ

このページに掲載するのは docker-compose コマンドの使い方に関する情報です。

You can also see this information by running docker-compose --help from the command line.

この情報はコマンドライン上で docker-compose --help を使っても確認できます。

Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f <arg>...] [--profile <name>...] [options] [COMMAND] [ARGS...]
  docker-compose -h|--help

Options:
  -f, --file FILE             Specify an alternate compose file
                              (default: docker-compose.yml)
  -p, --project-name NAME     Specify an alternate project name
                              (default: directory name)
  --profile NAME              Specify a profile to enable
  --verbose                   Show more output
  --log-level LEVEL           DEPRECATED and not working from 2.0 - Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  --no-ansi                   Do not print ANSI control characters
  -v, --version               Print version and exit
  -H, --host HOST             Daemon socket to connect to

  --tls                       Use TLS; implied by --tlsverify
  --tlscacert CA_PATH         Trust certs signed only by this CA
  --tlscert CLIENT_CERT_PATH  Path to TLS certificate file
  --tlskey TLS_KEY_PATH       Path to TLS key file
  --tlsverify                 Use TLS and verify the remote
  --skip-hostname-check       Don't check the daemon's hostname against the
                              name specified in the client certificate
  --project-directory PATH    Specify an alternate working directory
                              (default: the path of the Compose file)
  --compatibility             If set, Compose will attempt to convert deploy
                              keys in v3 files to their non-Swarm equivalent

Commands:
  build              Build or rebuild services
  bundle             Generate a Docker bundle from the Compose file
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove containers, networks, images, and volumes
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show the Docker-Compose ve

Docker コンテナで複数のサービスを構築・管理するには、 Docker Compose のバイナリを使い、 docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] のようにして実行できます。

-f を使い、Compose ファイルの名前とパスを指定

Compose 設定ファイルの場所を指定するには、 -f フラグを使います。

複数の Compose ファイル指定

複数の -f 設定ファイルを指定できます。複数のファイルを指定したら、Compose は1つの設定ファイルに連結します。Compose はファイルを指定した順番で構築します。後に続くファイルは、既に実行したものを上書き・追加します。

たとえば、次のようなコマンドラインを考えます。

$ docker-compose -f docker-compose.yml -f docker-compose.admin.yml run backup_db`

docker-compose.yml ファイルは webapp サービスを指定しています。

webapp:
  image: examples/web
  ports:
    - "8000:8000"
  volumes:
    - "/data"

また、 docker-compose.admin.yml ファイルで同じサービスを指定したら、以前のファイルで指定した同じフィールドの項目があれば、それを上書きします。新しい値があれば、 webapp サービスの設定に追加します。

webapp:
  build: .
  environment:
    - DEBUG=1

複数の Compose ファイルを指定する場合は、全てのパスは、1番目に -f で指定した設定ファイルからの相対パスです。この基準となるパスを上書きするには --project-directory オプションが使えます。

-f- (ダッシュ)をファイル名として指定すると、標準入力から設定を読み込みます。設定に標準入力を使う場合のパスは、現在の作業用ディレクトリからの相対パスとなります。

-f フラグはオプションです。コマンドラインでこのフラグを指定しなければ、Compose は現在の作業用ディレクトリと docker-compose.yml ファイルと docker-compose.override.yml ファイルのサブディレクトリを探します。もし、2つのファイルが同じディレクトリ階層にある場合、Compose は2つのファイルを1つの設定ファイルに連結します。

この時、 docker-compose.yml ファイルにある値は、 docker-compose.override.yml ファイルで設定し値で上書きします。

1つの Compose ファイルのパスを指定

現在のディレクトリに存在しない Compose ファイルのパスは指定可能です。そのためには、コマンドラインで -f フラグを使い指定するか、あるいは、シェル上の COMPOSE_FILE 環境変数 もしくは環境変数ファイルで指定するかのどちらかです。

コマンドラインで -f オプションを使う例として、 Compose Rails サンプル を使うと仮定すると、 docker-compose.yml ファイルは sandbox/rails という名前のディレクトリにあります。 docker-compose pull のようなコマンドを使い、 db サービス用の postgres イメージを何らかの場所から取得するには、 -f` フラグを次のように使います。 docker-compose -f ~/sandbox/rails/docker-compose.yml pull db

以下は、サンプルの全体です。

$ docker-compose -f ~/sandbox/rails/docker-compose.yml pull db
Pulling db (postgres:latest)...
latest: Pulling from library/postgres
ef0380f84d05: Pull complete
50cf91dc1db8: Pull complete
d3add4cd115c: Pull complete
467830d8a616: Pull complete
089b9db7dc57: Pull complete
6fba0a36935c: Pull complete
81ef0e73c953: Pull complete
338a6c4894dc: Pull complete
15853f32f67c: Pull complete
044c83d92898: Pull complete
17301519f133: Pull complete
dcca70822752: Pull complete
cecf11b8ccf3: Pull complete
Digest: sha256:1364924c753d5ff7e2260cd34dc4ba05ebd40ee8193391220be0f9901d4e1651
Status: Downloaded newer image for postgres:latest

-p を使いプロジェクト名を指定

各設定ファイルはプロジェクト名を持ちます。 -p フラグを追加すると、プロジェクト名を指定できます。このフラグを指定しなければ、Compose は現在のディレクトリ名をプロジェクト名として使います。 詳細は COMPOSE_PROJECT 環境変数 をご覧ください。

--profile を使い1つまたは複数のアクティブなプロファイルを指定

docker-compose --profile frontend up `` を呼び出すと、プロファイル ``frontend のサービスを起動し、プロファイルの指定が無いサービスも起動します。また、複数のプロファイル指定も可能であり、たとえば docker-compose --profile frontend --profile debug up であれば frontenddebug を有効化します。

Compose で を使うCOMPOSE_PROFILES 環境変数 をご覧ください。

環境変数のセットアップ

-f-p フラグを含む様々な docker-compose オプション用の 環境変数 を指定できます。

たとえば、 -f フラグに関係する COMPOSE_FILE 環境変数 や、 -p フラグに関係する COMPOSE_PROJECT_NAME 閑居変数 です。

また、各環境変数は 環境変数用のファイル でも設定できます。

次に読む文章

参考

Overview of docker-compose CLI

https://docs.docker.com/compose/reference/