導入
私は新卒でエンジニアをやっております。
まずはこの記事を読んでくれて、ありがとうございます。
自分は少し前に、気になっていたことがあります。
「docker-compose.ymlで呼んでいる変数には、実際にどういう値が入っているのだろう」
ということについてです。
これが分からないとデバッグのしようがありません。
プログラミングでも、
- ログを確認する
- 変数に格納された値を出力してみる
- データ型を確認してみる
こういったやり方で修正しようとしますよね
Dockerでもエラーが起きた際に、知りたいなと思い、方法を調べました。
それを本記事でお伝えする次第です!
docker compose convertコマンド
結論、こちらのコマンドで出力できます
docker compose convert
試しに、以下のようなdocker-compose.ymlファイルがあるとします。
version: '3.8'
services:
db:
image: postgres:latest
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- postgres_volume:/var/lib/postgresql/data
- ./docker/postgres/script:/docker-entrypoint-initdb.d
- ./docker/postgres/postgresql.conf:/etc/postgresql/postgresql.conf
ports:
- '5432:5432'
networks:
- app-networks
env_file:
- ./docker-setting/.env
ここで、用いられている変数は以下のところです。
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
これらは.envファイルから読み込みます。
docker-compose.ymlから読み込む.envファイルは、デフォルトで同階層上にあるファイルを参照します。
上の例では、.envファイルが同階層上にはないため、"env_file:"で相対パスを指定しています。
試しに、この部分でエラーが出たとしましょう
「実際にはどんな値が入っているんだろう」と
ではdocker compose convert
を入力してみましょう。
すると、コマンド上でこんな出力を得られます。
先ほど、変数を呼び出していたところみて見てください。
こちらは筆者が適当に.envで宣言した値です。
※筆者はガンダムファンであるため、newtypeと入っています。
これで確認できました!
終わり
ちなみにこちらは以下の公式ドキュメントにあります。
ぜひこちらも確認してみてください。