0
0

More than 1 year has passed since last update.

Docker Compose YAMLファイルで環境変数を解析させない方法

Posted at

TL;DR

もし $var を Docker Compose に解析させたくないなら、二重ドル記号 つまり $$var を使ってください。

経緯

Docker Composeを使って開発環境を作りたいと思って、下記のように Redis サービスの定義がある。

version: '3'
services:
  # ...省略
  redis:
    image: redis:7-alpine
    entrypoint: /bin/sh
    command: -c 'exec redis-server --requirepass "$REDIS_PASSWORD" --loglevel verbose'
    environment:
      REDIS_PASSWORD: "changeme"
    ports:
      - '6379:6379'

commandの Value にある $REDIS_PASSWORD は、コンテナーが起動するときにenvironmentで指定した変数に入れ替えられるはずだが、実際に空白になる。なぜというと、composeには environment var subsitution という機能があって、docker compose upを実行時に、シェル内 に定義されたREDIS_PASSWORD環境変数の値を探し、その値を展開する。定義されてないなら、当然空白になる。

とても素晴らしい機能だと思いますが、ここでは問題を起こした。

回避策として、二重ドル記号を使えればそのまま展開しなくて済む。

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