Docker里的PostgreSQL容器无法启动

总结

    • 今までMySQLのDBコンテナを使っていたが、訳あってPostgreSQLのコンテナに返る事になった。

 

    DBコンテナがエラーで起動せずちょっと詰まったので簡単にまとめておく。

問題的由來

docker-composer.ymlのdbサービスで下記のように記載した。

docker-composer.yml
db:
build:
context: ./.hoge/db
dockerfile: Dockerfile
ports:
– 3542:5432
environment:
POSTGRES_DATABASE: hoge_app
POSTGRES_USER: hoge_app
POSTGRES_PASSWORD: xxxxxxxx
TZ: “Asia/Tokyo”
volumes:
– db-volume:/var/lib/postgresql/data:cached

docker-composer up実行しコンテナの起動を試みた。

出现问题

下記のエラーがでてdbサービスのコンテナが起動しない。
YYYY-MM-DD HH:MM:SS initdb: error: directory “/var/lib/postgresql/data” exists but is not empty
YYYY-MM-DD HH:MM:SS initdb: hint: If you want to create a new database system, either remove or empty the directory “/var/lib/postgresql/data” or run initdb with an argument other than “/var/lib/postgresql/data”.

直到问题解决的过程

ちょっと調べたところどうやらDBのデータ永続化ボリュームにすでにデータがあるためdbサービスを初期化できない旨のエラーっぽい。

ホストPCで下記コマンドを実行してボリューム一覧を確認する。
docker volume ls

下記のように出力された。(testって付いてる方はテストコード用のdbのボリューム)
DRIVER VOLUME NAME
local hoge-app_db-volume
local hoge-app_test-db-volume

どうやらhoge-app_db-volumeの方のボリュームが存在し、空じゃないから初期化できずエラーになるっぽい。

すでにDBで保存している情報は失われるが、下記コマンドを実行して当該のボリュームを削除した。
docker volume rm hoge-app_db-volume

再びdocker-composer upをすると問題なくコンテナが起動した。

广告
将在 10 秒后关闭
bannerAds