Home About Contact
PostgreSQL , Docker

Docker + PostgreSQL でコンテナを破棄してもデータは維持したい

以前のポスト PostgreSQL データベースのバックアップとリストア の続きです。 docker run していた Postgres のコンテナを破棄すると そのコンテナ内のデータベースの内容も消えます。 その方が都合が良いことも多いのですが、そうではなく維持したい場合について調べた。

結論:

以前は次のように docker run していた:

$ docker run --rm -d \
  -p 5432:5432 \
  --name my-postgre \
  -e POSTGRES_HOST_AUTH_METHOD=trust \
  postgres

これを次のようにする:

$ docker run --rm -d \
  -p 5432:5432 \
  --name my-postgre \
  -e POSTGRES_HOST_AUTH_METHOD=trust \
  -e PGDATA=/var/lib/postgresql/data/pgdata \
  -v ${HOME}/.var/lib/postgresql/data:/var/lib/postgresql/data \  
  postgres

次の2行を追加しただけです。

  -e PGDATA=/var/lib/postgresql/data/pgdata \
  -v ${HOME}/.var/lib/postgresql/data:/var/lib/postgresql/data \  

-v でホストOSのどのディレクトリに PGDATA に該当するディレクトリを割り当てるかを指定します。

これで、コンテナを破棄してから再度起動してもデータを維持できました。