LoginSignup
0
1

Docker composeで--env-fileオプションとデフォルト環境変数を使ったコンテナ内環境変数の切り替え方法

Last updated at Posted at 2024-04-08

はじめに

 Docker composeの起動時オプション「--env-file」と「environment」のデフォルト環境変数を使って、コンテナ内の環境変数を切り替える方法を紹介する。
 設定ファイル(xxx.env)を複数用意することで、コンテナ内の環境変数を変更することができるので、docker-compose起動時にコンテナの振る舞いを変更したいときに有用。

動作確認環境

  • Ubuntu 22.04
  • Docker compose v2.24.2

方法

ポイント

  • docker-compose.ymlファイルのenvironmentセクションに、コンテナ内に指定したい環境変数を指定
    • この時、デフォルト環境変数の値を設定しておく
  • xxx.envファイルに、個別設定したい環境変数を記載
  • environmentに指定するコンテナ内の環境変数と、xxx.envファイルに指定するdocker-composeファイル内の環境変数の名前は同じにしておく(別々でも良いが、わかりやすくするため)

環境変数の設定の流れは以下となる。

具体例

構成

 以下のようなファイル構成とする。ここでは、切り替えたい個々の環境変数設定として、a.envb.envを用意する。

.
├── docker-compose.yml
└── config
    ├── a.env
    └── b.env

docker-compose.ymlの設定

 環境変数のデフォルト値の指定は、${環境変数名:-デフォルト値}と指定する。こうすることで、環境変数が設定されていない場合はデフォルト値が使われるようになる。

デフォルト値の前に-が入るので、数値を設定する場合は注意する。

docker-compose.yml
version: '3'
services:
  test:
    image: ubuntu:20.04
    environment:
      STRING_VALUE=${STRING_VALUE:-default}  # デフォルト値:default 
      BOOL_VALUE=${BOOL_VALUE:-false}  # デフォルト値:false
      INT_VALUE=${INT_VALUE:-1}   # デフォルト値:1
      DOUBLE_VALUE=${DOUBLE_VALUE:--1.5}   # デフォルト値:-1.5

xxx.envファイルの設定

 個別設定したい環境変数をxxx.envファイルに記述する。docker-compose.ymlに記述したデフォルト値を利用したい場合は、xxx.envファイルには指定しない。

設定A

a.env
STRING_VALUE=a
BOOL_VALUE=true
INT_VALUE=2
DOUBLE_VALUE=0.1

設定B

b.env
STRING_VALUE=b

起動方法

環境変数のデフォルト値を使いたい場合

docker compose up

コンテナ内の環境変数は以下のようになる(全てデフォルト値)。

STRING_VALUE=default
BOOL_VALUE=false
INT_VALUE=1
DOUBLE_VALUE=-1.5

設定A (a.envを指定する場合)

docker compose --env-file ./config/a.env up

コンテナ内の環境変数は以下のようになる(全てa.envで設定した値)。

STRING_VALUE=a
BOOL_VALUE=true
INT_VALUE=2
DOUBLE_VALUE=0.1

設定b (b.envを指定する場合)

docker compose --env-file ./config/b.env up

コンテナ内の環境変数は以下のようになる(STRING_VALUE以外デフォルト値)。

STRING_VALUE=b
BOOL_VALUE=false
INT_VALUE=1
DOUBLE_VALUE=-1.5

まとめ

 Docker composeの起動オプション--env-fileとenvironment環境変数のデフォルト値を使って、コンテナ内の環境変数を切り替える方法を紹介した。envファイルを複数用意することで、コンテナ環境変数を変更してコンテナの挙動を変更させたい場合に有用。

参考

0
1
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
0
1