質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

2718閲覧

dokcer composeで posrgresを立ち上げたらvolumeのエラーが発生する

enokia

総合スコア23

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/10/08 17:08

docker-compose upコマンドを実行したらvolumeのエラーが発生しました。
わかる人いましたらご教授お願いしたいです。

エラー

ERROR: Named volume "dbdata:/var/lib/postgresql/data:rw" is used in service "postgres" but no declaration was found in the volumes section.

docker-compose.yml

version: "3.8" services: postgres: container_name: postgres image: postgres:latest environment: POSTGRES_USER: user POSTGRES_PASSWORD: mypassword ports: - "5432:5432" volumes: - dbdata:/var/lib/postgresql/data

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

エラーメッセージで検索すれば情報が見つかります。以下のページとか。

【補足】
エラーメッセージから以下の情報が読み取れます。

  • dbdataがディレクトリではなくデータコンテナとして解釈されている
  • (docker-compose.ymlの)volumesセクションにdbdataの定義が見つからない

投稿2021/10/08 23:16

tkmtmkt

総合スコア1800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

dbdataというvolumeが定義されていないということかなと思います。多分。
versionservicesと同じ階層にもvolumesを定義してそこにdbdataと書けば大丈夫かと思います。

docker

1version: "3.8" 2 3services: 4 postgres: 5 container_name: postgres 6 image: postgres:latest 7 environment: 8 POSTGRES_USER: user 9 POSTGRES_PASSWORD: mypassword 10 11 ports: 12 - "5432:5432" 13 volumes: 14 - dbdata:/var/lib/postgresql/data 15 16volumes: 17 dbdata

参考: https://www.ogis-ri.co.jp/otc/hiroba/technical/docker/part4.html

投稿2021/10/08 17:27

ukyoda

総合スコア386

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

enokia

2021/10/08 18:15

ありがとうございます。 読んでもよくわからなかったのですがpostgres内でvolumes:- dbdata:/var/lib/postgresql/dataと書いてあり、この宣言だけでpostgrresのデータの永続化ができていると思うのですがなぜvolumes: dbdataが必要なのでしょうか?
enokia

2021/10/08 18:19

ERROR: In file './docker-compose.yml', volume must be a mapping, not a string.このエラーが表示されました
ukyoda

2021/10/09 00:46 編集

あっ、すみません。ちょっと間違えていたみたいです。 topレベルに追加したvolumesのところは、`dbdata`ではなく`dbdata:`ですね。コロンを付けてセクションにする必要があります。 ```yaml volumes:   dbdata: ``` ※空白を認識しなかったので空白は全角で書いています > この宣言だけでpostgrresのデータの永続化ができていると思うのですがなぜvolumes: dbdataが必要なのでしょうか? 僕も詳しいわけではないので違うかもしれないですが、おそらくこんな感じの仕様なんだと思います。 確かに同じ`volumes`という名前ではありますが、それぞれ意味が違う設定ということですね。 - postgres内に定義した`volumes:`はなにか? - あくまでvolumeをコンテナにマウントする設定であって、volumeを作るための設定ではない - topレベルに定義しているvolumesはなにか? - こちらがvolume自体を設定するセクション - ここで定義したvolumeじゃないと使えない
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問