🎉

Docker Compose 'services.web.environment.0 must be a string' エラー解決方法

2023/08/25に公開

背景

docker composeコマンドを実行するとservices.web.environment.0 must be a stringというエラーが起きることがあった。エラー解決した経緯を残します。

エラー発生時

docker-compose.ymlファイルを編集した後コマンドを実行すると

powershell
$ docker compose up -d --build
services.web.environment.0 must be a string
$ docker compose down
services.web.environment.0 must be a string
$ docker compose build
services.web.environment.0 must be a string

と表示された。

"services"、"web"、"environment"って書いてあるのでdocker-compose.ymlのwebサービス配下にあるenvironment部分を見直し。

docker-compose.yml
version: '3'

services:
  # アプリケーションの実行環境
  web:
    # (省略)
    environment:
      - DATABASE_URL: postgres://admin:password@db:5432/mydatabase
    # (省略)

  db:
    # (省略)

見た感じ合ってそうなんだけど...

エラー解決時

環境変数の先頭- を削除したらエラー解消するみたい。
なぜ- はダメなのかすぐわからなかったので後で調べてみます。

docker-compose.yml
version: '3'

services:
  # アプリケーションの実行環境
  web:
    # (省略)
    environment:
      DATABASE_URL: postgres://admin:password@db:5432/mydatabase # "- "を削除
    # (省略)

  db:
    # (省略)

動作確認

powershell
$ docker compose build
[+] Building 1.9s (6/6) FINISHED

Discussion