業務でdocker-compose.ymlファイルの環境変数の設定をいじることがあったのでメモ。
超基本的な内容から個人的におすすめの設定までまとめていきます。
そもそも環境変数って何?
まずは環境変数ってなんぞや?ってところから見ていきますと、要はアプリケーションの設定値をコードとは別に管理するための仕組みのことです。
Docker Composeで環境変数を適切に設定することで、セキュリティの向上やアプリケーションの柔軟性、設定の分離などのメリットがあるんですよね。
環境変数の設定方法
で、肝心の環境変数の設定方法ですが、大きく分けて以下の4つがあります。
それぞれ一長一短あるんですが、個人的にオススメなのは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ファイルを分けて管理するのが良い
って感じですかね。プロジェクトの要件に合わせて適切な方法を選択することが大事です。あとチーム内で方法を統一しておくのも大切ですね〜。