PostgreSQLに関した練習やテスト、実験などを行うときにPostgreSQLが動いている一時的な環境が欲しくなるときがあります。 PostgreSQLイメージとPodmanを利用すると、特定バージョンのPostgreSQLに関する一通りの操作ができる一時的なコンテナ環境を用意することが出来ます。 以下にコンテナ環境の作成、利用、削除の流れと方法を示します。 ### コンテナ環境の作成 以下の3つのコマンドを実行することで、PostgreSQLのコンテナ環境を作成し、クライアント側のコンテナのbash環境に入ることが出来ます。 なお、コマンド内の「16」のところはPostgreSQLのメジャーバージョンに相当しますので、ご利用になりたいバージョンの数に変更してください。 また、`-v "$PWD":/x -w /x`のオプションにより、ホストOSのカレントディレクトリにコンテナ内からもアクセス出来る状態でbashが立ち上がります。 したがって、実験などに利用したいファイルをカレントディレクトリに置いてから以下のコマンドを実行すればコンテナ内でもそのファイルを利用できますし、 コンテナ内で`/x`のディレクトリに作成したファイルはコンテナ環境を終了した後もホストOSのカレントディレクトリに残ります。 ```shell podman pod create --name tmp_pg podman run --name tmp_pg-server --pod tmp_pg -e POSTGRES_PASSWORD=postgres -d postgres:16 podman run -it --rm -v "$PWD":/x -w /x --name tmp_pg-bash --pod tmp_pg postgres:16 bash ``` 以下のようなプロンプトが表示されていれば成功です。クライアント側のコンテナのbash環境に入れました。 ``` root@tmp_pg:/x# ``` ### クライアント側のコンテナのbash環境の利用 このbash環境では、`psql`などのPostgreSQLのコマンドを一通り利用することが出来ます。以下に例を示します。 PostgreSQLのターミナルを開く例: ```shell psql -h localhost -U postgres -d postgres ``` バックアップファイルを作成する例: ```shell pg_dump -Fc -h localhost -U postgres -d postgres -f backup.dump ``` バックアップファイルをリストアする例: ```shell pg_restore --clean -h localhost -U postgres -d postgres backup.dump ``` クライアントのコンテナを終了しそのbash環境から退出する場合は`exit`コマンドで抜けられます。 また、退出後にもう一度クライアントを使いたくなった場合は、後述のコンテナ環境全体の削除をまだしていなければ、 以下の3つめのコマンドだけ実行すれば、クライアントのコンテナをもう一度作成しそのbash環境に入ることが出来ます。 ```shell podman run -it --rm -v "$PWD":/x -w /x --name tmp_pg-bash --pod tmp_pg postgres:16 bash ``` ### コンテナ環境全体の削除 以下のコマンドで、コンテナ環境全体の停止と削除が実行できます。 ```shell podman pod stop tmp_pg && podman pod rm tmp_pg ```