0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

docker-compose.ymlの変数展開 "docker cocmpose convert"コマンド

Posted at

導入

私は新卒でエンジニアをやっております。

まずはこの記事を読んでくれて、ありがとうございます。

自分は少し前に、気になっていたことがあります。

「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を入力してみましょう。
すると、コマンド上でこんな出力を得られます。

スクリーンショット 2025-05-31 12.04.47.png

先ほど、変数を呼び出していたところみて見てください。
こちらは筆者が適当に.envで宣言した値です。

※筆者はガンダムファンであるため、newtypeと入っています。

これで確認できました!

終わり

ちなみにこちらは以下の公式ドキュメントにあります。
ぜひこちらも確認してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?