Docker-composeで環境変数の値をファイルで管理する
DBの設定をアプリケーション側で利用したい時よくやるやつ
とりあえずどんなふうに書くのかというとこんな感じ
services: db: image: mysql:8.0 container_name: mysql_host environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} MYSQL_DATABASE: ${DATABASE} MYSQL_USER: ${DB_USER} MYSQL_PASSWORD: ${DB_USER_PASSWORD} TZ: '${TZ}' app: image: python container_name: app environment: MYSQL_DATABASE: ${DATABASE} MYSQL_USER: ${DB_USER} MYSQL_PASSWORD: ${DB_USER_PASSWORD}
で、これをどのように変数を共通化しているかというと、docker-compose.yamlと同階層に .env ファイルを配置しこんな感じに書く。
B_ROOT_PASSWORD=root DATABASE=test_database DB_USER=docker DB_USER_PASSWORD=docker TZ=Asia/Tokyo
実務でこれ運用した事ないから知らないけど、何故これが便利かと想像すると。
env.get()
とかで値を取れば良いだけなので、アプリケーションにDBなどの情報を直接書かずにすむのが一番大きいのかな?
スケールのしやすさ、リポジトリに直接DBのパスワードとかあげなくてよくなったりとか...
一応このリポジトリで同じ事はやっている