はじめに
docker-composeでPostgreSQLとpgadminのコンテナーを立ち上げ、PostgreSQLはデータの永続化、pgadminはサーバ接続等、設定情報の永続化を行います。コンテナーは基本的に削除すると起動時に操作した結果が消えてしまいます。
PostgreSQLのデータ永続化は色々と紹介されてますが、pgadmin4の方は見かけず、毎回起動する度にpostgresコンテナとの接続を行うのが億劫だったのでこちらも設定情報を残すようにします。
pgadmin4とは
- GUIでPostgreSQLのデータベース管理を行えるクライアントソフトです
- 以下のようなUIです
公式ドキュメント
接続サーバーの設定情報をjson形式でexport/importすればいけるようなことが書いてありましたが、こちらで試したところうまくいきませんでした。
https://www.pgadmin.org/docs/pgadmin4/dev/export_import_servers.html
結論
以下のようにdocker-compose.ymlを書きます。
単にpgadmin4コンテナの中の"/var/lib/pgadmin"をvolumeするだけでいけました。
postgresの方の永続化は"/var/lib/postgresql/data"をvolumeすればいけます。
これで初回のコンテナ起動時のみpstgresqlサーバーとの接続を行えば、次回以降の起動時には自動してくれるようになります。
version: '3.7'
services:
postgres:
image: postgres:11.2
container_name: postgres
ports:
- 5432:5432
volumes:
- ./docker/postgres/init.d:/docker-entrypoint-initdb.d
- ./docker/postgres/pgdata:/var/lib/postgresql/data
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
hostname: postgres
restart: always
user: root
pgadmin4:
image: dpage/pgadmin4:4.2
container_name: pgadmin4
ports:
- 8000:80
volumes:
- ./docker/pgadmin4:/var/lib/pgadmin
environment:
PGADMIN_DEFAULT_EMAIL: root
PGADMIN_DEFAULT_PASSWORD: root
hostname: pgadmin4
depends_on:
- postgres
restart: always