Dockerで環境変数を使用する方法
アプリケーションなどで、開発環境や本番環境で、設定情報が変更されるようなものは、ハードコードしたくないので、外部から参照できる設定ファイルにしておきたい。
その時に、Dockerの環境変数として設定できると嬉しい。
Dockerの環境変数設定
docker-compose.xml のプロパティとして、 env_file がある。
ここに、環境変数設定をおこなうことが可能となる。
<例>: env_file: .env
仮にpythonの環境に、このファイルを設定するとした場合、以下のようになる。
version: '3'
services:
web:
env_file: .env
image: 'python:3.10'
build: .
volumes:
- .:/code
tty: true
ports:
- 8000:8000環境変数ファイルの作成
上記 env_file で設定したファイルを作成し、内容を [key]=[value] の形式で記述する。
その際、文字列でも数列でも、クォーテーションなどでの囲いは必要ない。
例えば、mysqlの設定をしたいとしたときに、内容は以下となる。
DATABASE_NAME=test_database
DATABASE_USER=database_user
DATABASE_PASSWORD=database_password
DATABASE_HOST=my_database
DATABASE_PORT=3306使用方法
上記設定を、Djangoの中で使用したいときは、 settings.py の DATABASE 部分を次のように変更する。
import os
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ.get('DATABASE_NAME'),
'USER': os.environ.get('DATABASE_USER'),
'PASSWORD' : os.environ.get('DATABASE_PASSWORD'),
'HOST': os.environ.get('DATABASE_HOST'),
'PORT': os.environ.get('DATABASE_PORT'),
}
}os.environ.get で指定しているのが、環境変数ファイルに入力した key となる
参考
https://matsuand.github.io/docs.docker.jp.onthefly/compose/environment-variables/
