DockerのPostgreSQLでdocker-entrypoint-initdb.dで指定したSQLが実行されない

今回はDockerのPostgreSQLでdocker-entrypoint-initdb.dで指定したSQLが実行されないとき、何が原因だったのかについてご紹介していこうと思います。



DockerのPostgreSQLでdocker-entrypoint-initdb.dで指定したSQLが実行されない

私は下記のようなdocker-compose.ymlの構成でコンテナ開始時にSQLを実行するようにしておりました。

しかし上記で、「./docker-postgres/initdb」の配下に「sample.sql」というファイルを配置してdocker-compose upを実行しましたが、「sample.sql」が叩かれている様子はありませんでした。
docker-entrypoint-initdb.dに配置したファイルは上記の場合だと「./docker-postgres/initdb」の配下にあるファイルがアルファベット順で実行されており、ログに出ないため実際にPostgreSQLの中に入ってSQLがエラーなく正常に実行できるかどうか見た方が良いということでしたが、私の場合は特に間違っている様子はありませんでした。

結論から言うと、私の場合は初歩的な勘違いで、上記の例であれば「./docker-postgres/data」を空っぽにしていないことが原因でした。
「./docker-postgres/data」の中にはDBのデータが格納されることになるのですが、前のデータが残っていたということですね。

「./docker-postgres/data」を空っぽにして再度docker-compose upをしたら「./docker-postgres/initdb」の配下にあるSQLファイルが実行されていることが確認できました。

終わりに

今回はDockerのPostgreSQLでdocker-entrypoint-initdb.dで指定したSQLが実行されないとき、何が原因だったのかについてご紹介いたしました。

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

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






Docker

Posted by ちこ