47
23

More than 1 year has passed since last update.

Docker Compose の設定は上書きできる

Last updated at Posted at 2020-12-09

知っておくとちょっと便利な Docker Compose の Tips。

Docker Compose の設定は上書きできる

docker compose コマンドの実行時に -f (もしくは --file ) を指定しなかった場合に compose.yml がデフォルトで読み込まれることは誰もが知っているかと思うが、このとき同時に compose.override.yml も読み込まれて上書きされる。

compose.yml
services:
  echo_env:
    image: busybox
    environment:
      DEFAULT: 1
    command: env
compose.override.yml
services:
  echo_env:
    environment:
      OVERRIDE: 1
$ docker compose up
echo_env_1  | DEFAULT=1
echo_env_1  | OVERRIDE=1

-f をひとつでも指定した場合は compose.override.yml は読み込まれない。

$ docker compose -f compose.yml up
echo_env_1  | DEFAULT=1

-f を指定する場合で設定を上書きしたい場合は、明示的に -f を複数指定する。

$ docker compose -f compose.yml -f compose.override.yml up
echo_env_1  | DEFAULT=1
echo_env_1  | OVERRIDE=1

このような設定の上書き機能は、実行環境ごとの環境変数を指定する場合などに便利。

Docker Compose の設定ファイル名を環境変数で指定する

毎回 -f を指定するのは面倒なので、これは環境変数で指定することが出来る。

$ COMPOSE_FILE=compose.yml docker compose up
echo_env_1  | DEFAULT=1

複数指定する場合は : で結合する。(Windows の場合は ;)

$ COMPOSE_FILE=compose.yml:compose.override.yml docker-compose up
echo_env_1  | DEFAULT=1
echo_env_1  | OVERRIDE=1

docker compose コマンドはデフォルトで .env から環境変数を読み込むので、これを書いておけば毎回ファイル名を指定する必要がなくなる。

.env
COMPOSE_FILE=compose.yml:compose.override.yml
$ docker compose up
echo_env_1  | DEFAULT=1
echo_env_1  | OVERRIDE=1

参考

47
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
23