Docker (5) - DockerでPostgreSQL -
タイトルどおり単純にDockerでPostgreSQLデータベースサーバーを起動してみるだけ
Dockerfile
FROM postgres
EXPOSE 5432
DockerHubにあるpostgresイメージを使うだけ。まあ普通になんなくビルドして以下のコマンドでコンテナを起動
docker run \
-e POSTGRES_USER=testuser \
-e POSTGRES_PASSWORD=1234 \
-p 5432:5432 \
-t test
であとは接続してデータベースを作ったりなんやかんやしたりする。だけどこれデータが永続化されていないのでコンテナを落としたりとかすると作ったデータベースなどが参照できない。要はデータが無い状態みたいになる
確証はないが指定をせずに起動させたりするとPostgreSQLが利用するデータをDocker側が起動した際にDocker Volumeを動的に作成しそこにデータがあるから落としたりして再度起動したりするとまた違うDocker Volumeを参照しているからなのではないかと。つーことでPostgreSQLが使用するデータを永続化させるためにDocker Volumeを指定しよう
docker run \
-e POSTGRES_USER=testuser \
-e POSTGRES_PASSWORD=1234 \
-v pgsql:/var/lib/postgresql/data \
-p 5432:5432 \
-t test
-vオプションでDocker Volumeを指定してやることでコンテナが利用するDocker Volumeを指定できるみたいな感じなのかなと。とりまこれでデータベース作って一回落としてからまた再度起動しても作ったデータベースは残ったままになる
ちなみにこれはPostgreSQLだけじゃなくてMySQLとかでもそうなのでデータベースなどを利用するようなサーバーをコンテナで利用する場合にはちゃんとDocker Volumeを指定しよう