はじめに
今回はDockerでPostgreSQLのDBコンテナを作成する際に発生したエラーと、その解決方法についてまとめます。
この記事は個人的なアウトプットを目的として作成したものです。そのため、誤った情報や不足している内容が含まれている可能性があります。もし間違いや気になる点がございましたら、ぜひご指摘いただけますと幸いです。
現象
以下のようにdocker-compose.ymlを設定した状態で、docker compose upを実行するとエラーが発生しました。
db:
image: postgres:16
container_name: db
volumes:
- db-data:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: todo_db
実行時に表示されたエラーは以下です。
please remove it to avoid potential confusion service "db" refers to undefined volume db-data: invalid compose project
原因
このエラーの原因は、db-dataというボリュームを使用しているにも関わらず、それを定義していなかった ことです。
例えると、「倉庫(db-data)を使う」と言っているのに、その倉庫自体がまだ建設されていない」 という状況に似ています。
解決方法
ボリュームを明示的に定義することで解決できます。修正後のdocker-compose.ymlは以下のようになります。
db:
image: postgres:16
container_name: db
volumes:
- db-data:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: todo_db
volumes:
da-data:
最後のボリュームを定義することでエラーが解決しました
終わりに
今回はDockerでPostgreSQLを扱う際は、ボリュームの管理を意識することが大切だと学びました。
参考