DockerのPostgreSQLで「initdb: error: directory “” exists but is not empty」

今回はDockerのPostgreSQLで下記のようなエラーが起きたときの対処法についてお話ししていこうと思います。



DockerのPostgreSQLで「initdb: error: directory “" exists but is not empty」

結論から言うと、PostgreSQLのDockerでマウントしているVolumeにドットがついている隠しファイルがあるとこのエラーが起こります。

例えば、docker-compose.ymlで

と指定していた場合に、
./docker-postgres/
のフォルダに.gitkeepなどの隠しファイルがあるとこのエラーが起こるでしょう。

解決策としては、エラーメッセージにある通り、PostgreSQLのデータの保存先でサブディレクトリを設置すると解決できます。
docker-compose.ymlのenvironmentのPGDATAでサブディレクトリの絶対パスを指定できるので、適当な名称でサブディレクトリを設置すると良いでしょう。

終わりに

今回はDockerのPostgreSQLで冒頭のようなエラーが起きたときの対処法についてお話しいたしました。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

ITパスポート、基本情報技術者、応用情報技術者などIPAが提供する国家資格の過去問を学べるモバイルアプリをリリースしました。
詳しくは下記のプレスリリースをご覧ください。
https://prtimes.jp/main/html/rd/p/000000008.000073303.html

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Docker

Posted by ちこ