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 up -d実行時にエラー発生 "ERROR: In file './docker-compose.yml', volume must be a mapping, not a string."

Last updated at Posted at 2022-10-02

Docker,Vagrantの学習をメインに続けています。その過程で、DockerfileをビルドしてからRuby,Postgresqlのイメージをpullしてきて簡易的なwebサイトの構築を実施していますが、コンテナが立ち上がらないエラーが発生しました...(泣)

1.エラー

Dockerfileをビルドさせた後に、docker-compose.ymlファイルを作成してdocker-compose up -dをしたら下記のエラーが発生しました。

$ docker-compose up -d
ERROR: In file './docker-compose.yml', volume must be a mapping, not a string.

2.原因

これは、間違いなくdocker-compose.ymlファイルの記述が間違ってますね!でも、どこが間違っているのでしょうか?
"volume must be a mapping"と出力されているので、おそらくホストとコンテナをマウントさせる記述のところですかね?

docker-compose.yml
db:
    image: postgres
    volumes: 
      - 'db-data': '/var/lib/postgresql/data'

見つけました!一番下の " - 'db-data': '/var/lib/postgresql/data' "の部分が間違ってます!

解決

では、修正していきましょう。

docker-compose.yml(修正前)
db:
    image: postgres
    volumes: 
      - 'db-data': '/var/lib/postgresql/data'
docker-compose.yml(修正後)
db:
    image: postgres
    volumes: 
      - 'db-data:/var/lib/postgresql/data'

一番下記述のシングルクォーテーションが余分に多かったですね。
その後、docker-compose up -dを実行するとうまくいきました!

3.最後に

docker-compose.ymlファイルは、正しくインデントや空白をつけないとうまく読み込んでくれません。また、コロンやシングルクォーテーションのつけ忘れ等の記述ミスをしやすい特性があります。(ただ単に私が間違えやすいだけww)なので、最初にdocker-composeでエラーが生じたらdocker-compose.ymlファイルに原因がある可能性が大きいので参考にしてみてください。

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?