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