なんだかGoodVibes

日々の勉強メモです。

【Docker】docker-composeの環境変数をファイルにまとめる

こんにちは。
本日はdocker-compose.ymlに定義した
環境変数を外部ファイルに定義する方法です。

概要

前回、docker-compose.ymlの作り方を記載しました。
ただ、環境変数が増えた場合に見にくくなってしまう...
なので、環境変数の設定を外部ファイルに定義してみる。

前回の記事は以下です。

nandakagoodvibes.hatenablog.com


envファイルの作成

実は、環境変数の設定を外部ファイルに設定するのは
すごく簡単です。
docker-composeの場合も、以下の記事と同様の方法です。

【Docker】Makefileを使ってコンテナを作成・操作する - なんだかGoodVibes

今回、db01とapp01用のファイルを用意します。

ファイルの配置は以下。

- docker-compose.yml
- Dockerfile.db01
- Dockerfile.app01
- env.app01  ← 追加
- env.db01   ← 追加
- springbootapp01
  - demo
    - target
      - demo.jar

前回の記事で、docker-compose.ymlの environment
記載していた内容を、それぞれのenvファイルに移します。

  • env.app01
POSTGRES_USER=mydb
POSTGRES_PASSWORD=postgres
POSTGRES_DB=mydb
DRIVER_CLASS_NAME=org.postgresql.Driver
DATASOURCE=jdbc:postgresql://db01:5432/mydb
  • env.db01
POSTGRES_USER=mydb
POSTGRES_PASSWORD=postgres
POSTGRES_DB=mydb

外部ファイルの作成はこれで完了です。


docker-compose.ymlの調整

では、docker-compose.ymlを先程作成したファイルを
読み込むよう修正します。
environmentの部分をenv_fileに変更し、
対象のファイルを指定します。

version: '3'

networks:
  default:
    name: bridge
  mynetwork01:
    name: mynetwork01

services:
  db01:
    container_name: db01
    build:
      context: .
      dockerfile: Dockerfile.db01
    tty: false
    ports:
      - 5432:5432
    networks:
      - mynetwork01
    env_file:       ← 変更
      - env.db01
  app01:
    container_name: app01
    build:
      context: .
      dockerfile: Dockerfile.app01
    tty: false
    ports:
      - 8080:8080
    networks:
      - mynetwork01
    env_file:       ← 変更
      - env.app01

これで完了です。
各環境の環境変数を確認すると、
envファイルに設定した内容が設定されているかと思います。



以上です。