Compose CLI 環境変数

Docker Compose コマンドラインの動作を設定するものとして、数種類の環境変数が利用できます。

DOCKER_が先頭につく変数は、Docker コマンドラインクライアントの設定に用いられる環境変数と同じです。 docker-machineを利用している場合は、eval "$(docker-machine env my-docker-vm)"コマンドを実行することで、各環境変数に適切な値が設定されます。 (この例ではmy-docker-vmが生成されているマシン名です。)

メモ

ここに示す環境変数の中には、環境ファイル を用いて設定できるものもあります。

COMPOSE_PROJECT_NAME

プロジェクト名を設定します。 この値は、コンテナーの起動時にサービス名の先頭につけられます。 たとえばプロジェクト名がmyappであり、2 つのサービスdbwebがあるとします。 Compose がコンテナーを起動したときにつける名前は、それぞれmyapp_db_1myapp_web_1です。

この変数を設定するのは任意です。 変数を設定しなかった場合COMPOSE_PROJECT_NAMEのデフォルトは、プロジェクトディレクトリのbasenameとなります。 コマンドラインオプション-pも参照してください。

COMPOSE_FILE

Compose ファイルへのパスを指定します。 指定されなかった場合、Compose はカレントディレクトリ内のdocker-compose.ymlというファイルを探します。 そしてファイルが見つからなければ、この名前のファイルを見つけるまで親ディレクトリを順にたどって探します。

この変数は複数の Compose ファイルの指定をサポートしています。 複数のパスはセパレーターで区切ります(パスセパレーターは Linux や macOS では :、Windows では ;)。 たとえばCOMPOSE_FILE=docker-compose.yml:docker-compose.prod.ymlとします。 パスセパレーターはCOMPOSE_PATH_SEPARATORを使って変更することもできます。

コマンドラインオプション-fも参照してください。

COMPOSE_PROFILES

有効にしたいプロファイルを複数指定します。 COMPOSE_PROFILES=frontendを指定してdocker-compose upを実行すると、プロファイルfrontendを持ったサービスと、このプロファイルを持たないサービスが起動されます。

複数のプロファイルを指定する場合は、プロファイルをカンマで区切った一覧として指定します。 たとえばCOMPOSE_PROFILES=frontend,debugとすると、プロファイルfrontenddebugが有効になります。

Compose でのプロファイル利用コマンドラインオプション--profileも参照してください。 .

COMPOSE_API_VERSION

Docker API は、クライアントが特定のバージョンを返す場合に限って、クライアントからのリクエストに応じます。 docker-composeを利用する際にclient and server don't have same version(クライアントとサーバーのバージョンが一致しません)というエラーが発生した場合は、その回避策として、本環境変数を設定する方法があります。 サーバーのバージョンに合致するようなバージョン値をこの変数に設定することです。

クライアントとサーバーのバージョンが一致しないときであっても、実行が必要になる状況があります。 この変数を用いるのは、そういった状況を一時的に解決するためです。 具体的には、クライアントをアップグレードしたものの、サーバーをまだアップグレードしていないような状況です。

この変数を設定したとしても、既知のバージョン不一致に該当していれば、Docker の機能が正常に動作しないことがあります。 動作しない機能は、Docker クライアントやサーバーのバージョンによって異なります。 このことから、本変数を設定して実行するのはあくまで一時的な回避策であり、公式にサポートされるものではありません。

本変数を設定することで問題が発生する場合は、アップグレードを行ってバージョンの不一致を解消してください。 そしてこの変数の定義を行わなかったらどうなるかを確認してください。 それでも問題が解決しない場合はサポートに問い合わせてください。

DOCKER_HOST

dockerデーモンの URL を設定します。 Docker クライアントと同じように、このデフォルト値はunix:///var/run/docker.sockです。

DOCKER_TLS_VERIFY

この変数が空文字以外であれば、dockerデーモンとの TLS 通信を有効にします。

DOCKER_CERT_PATH

TLS 検証に用いられる各種ファイル、ca.pem, cert.pem, key.pemのパスを設定します。 デフォルトは~/.dockerです。

COMPOSE_HTTP_TIMEOUT

Docker デーモンへの処理要求にあたって、Compose の処理は失敗していなくても、デーモンをハングアップさせる所要時間を(秒単位で)指定します。 デフォルトは 60 秒です。

COMPOSE_TLS_VERSION

dockerデーモンとの TLS 通信に用いられる TLS バージョンを指定します。 デフォルトは TLSv1です。 対応する値は TLSv1, TLSv1_1, TLSv1_2です。

COMPOSE_CONVERT_WINDOWS_PATHS

ボリュームの定義において、パスの記述に関して Windows 書式と Unix 書式の変換を有効にします。 Windows 上の Docker Machine を利用するユーザーは、必ず本変数を設定しておきます。 デフォルトは0です。 対応する値はtrueまたは1が有効を意味し、falseまたは0が無効を意味します。

COMPOSE_PATH_SEPARATOR

これが設定されている場合に、環境変数COMPOSE_FILEの設定値に対して、パスを区切る文字として本変数の設定値を用います。

COMPOSE_FORCE_WINDOWS_HOST

これが設定されていて、短い文法 によってボリュームの宣言を行うと、ホストのパスは Windows パスとして扱われます。 Compose が UNIX ベースのシステム上で動作していても、そのようになります。 対応する値はtrueまたは1が有効を意味し、またfalseまたは0が無効を意味します。

COMPOSE_IGNORE_ORPHANS

これが設定されている場合に、そのプロジェクト内で孤立したコンテナーを Compose が検出しないようにします。 対応する値はtrueまたは1が有効を意味し、falseまたは0が無効を意味します。

COMPOSE_PARALLEL_LIMIT

Compose が並列で処理する操作数を設定します。 デフォルト値は64です。 2よりも小さな値を設定することはできません。

COMPOSE_INTERACTIVE_NO_CLI

これが設定されている場合に、Docker CLI のrunexecの処理において Compose は対話的処理を行わないようにします。 前もって操作を定めておく必要がある Windows の CLI では、このオプションを利用することはできません。 対応する値はtrueまたは1が有効を意味し、falseまたは0が無効を意味します。

COMPOSE_DOCKER_CLI_BUILD

イメージをビルドする際に Compose Python クライアントを利用するか、ネイティブ Docker CLI を利用するかを設定します。 Compose のビルド処理は、デフォルトで dockerCLI を用います。 その場合には BuildKit を用いたビルド処理が可能です。

COMPOSE_DOCKER_CLI_BUILD=0に設定すればネイティブビルドが無効になり、ビルトインの Python クライアントが用いられます。

fig, composition, compose, docker, orchestration, cli, reference