Docker Composeにおける環境変数の設定方法

業務でdocker-compose.ymlファイルの環境変数の設定をいじることがあったのでメモ。

超基本的な内容から個人的におすすめの設定までまとめていきます。

そもそも環境変数って何?

まずは環境変数ってなんぞや?ってところから見ていきますと、要はアプリケーションの設定値をコードとは別に管理するための仕組みのことです。

Docker Composeで環境変数を適切に設定することで、セキュリティの向上やアプリケーションの柔軟性、設定の分離などのメリットがあるんですよね。

環境変数の設定方法

で、肝心の環境変数の設定方法ですが、大きく分けて以下の4つがあります。

  1. docker-compose.ymlファイル内で直接設定する方法
  2. .envファイルを使用する方法
  3. シェル環境変数を使用する方法
  4. CLIオプションを使用する方法

それぞれ一長一短あるんですが、個人的にオススメなのは2番の「.envファイルを使用する方法」ですね。

.envファイルを使用する方法

この方法は、docker-compose.ymlファイルとは別に.envファイルを用意して、そこに環境変数を記述するというものです。

例えば、こんな感じで.envファイルを用意します。

DATABASE_URL=postgres://user:password@db:5432/mydb
API_KEY=abcdefghijklmnop

で、docker-compose.ymlファイルではこの.envファイルを指定します。

version: '3'
services:
  app:
    env_file:
      - .env

こうすることで、.envファイルに記述した環境変数がアプリケーションで使えるようになるんですね。

で、本番環境用、開発環境用みたいに環境ごとに.envファイルを分けて管理することもできます。

# .env.development
DATABASE_URL=postgres://user:password@db:5432/mydb_dev
API_KEY=abcdefghijklmnop

# .env.production
DATABASE_URL=postgres://user:password@db:5432/mydb_prod
API_KEY=qrstuvwxyz

こんな感じで環境ごとの.envファイルを用意しておいて、Makefileなどでそれぞれの環境に応じた.envファイルを指定するようにすると、環境ごとの設定を柔軟に切り替えられて便利ですよ。

run-development:
    docker-compose --env-file .env.development up

run-production:
    docker-compose --env-file .env.production up

まとめ

というわけで、Docker Composeにおける環境変数の設定方法についてザックリと見てきました。

  • 環境変数の設定方法にはいくつかある
  • .envファイルを使用する方法がオススメ
  • 環境ごとの設定は.envファイルを分けて管理するのが良い

って感じですかね。プロジェクトの要件に合わせて適切な方法を選択することが大事です。あとチーム内で方法を統一しておくのも大切ですね〜。

参考

docs.docker.jp

qiita.com