以前のポスト 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 に該当するディレクトリを割り当てるかを指定します。
これで、コンテナを破棄してから再度起動してもデータを維持できました。