このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】pgAdmin4とPostgreSQLコンテナ

ここでは、Docker Composeコマンドを使ったpgAdmin4とPostgreSQLコンテナの構築例を紹介します。
pgAdmin4とは
まず、はじめにpgAdmin4について解説しておきます。

MySQLやMariaDBをGUIで操作ツールにphpMyAdminがあったように、PostgrSQLにもGUIでアクセスできるツールがあります。
pgAdmin4(ビージーアドミンフォー)は、オープンソースのデータベース管理ツールです。PostgreSQLデータベースを効果的に管理するためのWebベースのユーザーインターフェースを提供します。pgAdmin4は、データベースの作成、テーブルの設計、クエリの実行、ユーザーの管理など、多くの一般的なデータベース管理タスクを実行できる強力なツールです。
pgAdmin4は、PostgreSQLコミュニティによって開発およびサポートされており、多くのプラットフォームで利用できます。Webベースのインターフェースを通じて、データベース管理者や開発者は簡単にPostgreSQLサーバーにアクセスし、データベースの状態を確認し、操作を行うことができます。

PostgreSQLとは

PostgreSQL(ポストグレスキューエル)は、オープンソースのリレーショナルデータベース管理システム(RDBMS)であり、世界中の多くの組織やコミュニティによって広く利用されています。その名前は「Postgres」(Post Ingresの略)に由来し、カリフォルニア大学バークレー校の研究プロジェクトから派生しています。
URL:https://www.postgresql.org/

pgAdmin4とPostgreSQL コンテナの作成
「compose.yaml」を作成して、pgAdmin4とPostgreSQLコンテナを作成します。
不要なDockerオブジェクトの削除
まず、不要なDockerオブジェクトをすべて削除しておきます。
以下のコマンドを実行します。
・「docker system prune -a」コマンドを実行します。
Are you sure you want to continue? [y/N] の質問には「y」と入力します。
PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
(略)
・「docker system prune -a」コマンドで削除されなかったDockerオブジェクトは、個別に削除しておきます。
環境によって削除されずに残っているDockerオブジェクトは異なります。
compose.yaml の作成
ディレクトリの作成と移動
Docker Composeでコンテナを作成するには、「compose.yaml」ファイルが必要になります。
デフォルトでは、カレントディレクトリにある「compose.yaml」ファイルが読み込まれるため、作業ディレクトリに移動しておきます。
・「cd desktop/docker」コマンドを実行します。
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker>
「compose.yaml」ファイルを保存する「pgadminpostgre」ディレクトリを作成して、作成したディレクトリに移動します。次のコマンドを実行します。
- 「mkdir pgadminpostgre」コマンド
- 「cd pgadminpostgre」コマンド
PS C:\Users\joeac\Desktop\docker> mkdir pgadminpostgre
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2024/04/18 2:25 pgadminpostgre
PS C:\Users\joeac\Desktop\docker> cd pgadminpostgre
PS C:\Users\joeac\Desktop\docker\pgadminpostgre>
VSCodeの起動
VSCodeで「compose.yaml」ファイルを作成します。
・「code compose.yaml」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\pgadminpostgre> code compose.yaml
VSCodeが起動します。

「compose.yaml」ファイルの編集
・「compose.yaml」ファイルを以下のように編集して保存します。
「PGADMIN_DEFAULT_EMAIL:」には、使用するメールアドレスを指定します。ここでは、ダミーのメールアドレスを指定しています。
「PGADMIN_DEFAULT_PASSWORD:」には、pgAdmin4に登録可能なパスワードを指定する必要があります。登録できないパスワードを指定した場合は、pgAdmin4の管理ページにログインできません。
services:
postgres:
image: postgres:14.2
container_name: postgres_container
environment:
POSTGRES_DB: test-db
POSTGRES_USER: test-user
POSTGRES_PASSWORD: test-pass
volumes:
- db-data:/var/lib/postgresql/data
pgadmin:
image: dpage/pgadmin4:6.9
container_name: pgadmin_container
environment:
PGADMIN_DEFAULT_EMAIL: admin@example.com
PGADMIN_DEFAULT_PASSWORD: adminpassword
ports:
- "5050:80"
volumes:
- pgadmin4-data:/var/lib/pgadmin
volumes:
db-data:
pgadmin4-data:
定義内容の解説
「compose.yaml」ファイルの定義を解説します。
項目 | 説明 |
---|---|
services | コンテナ化されるサービスを定義するセクション。 |
postgres | PostgreSQLサービスの定義。 |
image | 使用するDockerイメージを指定。 |
container_name | コンテナの名前を指定。 |
environment | 環境変数を設定するセクション。 |
POSTGRES_DB | PostgreSQLに作成されるデータベースの名前を指定。 |
POSTGRES_USER | PostgreSQLに作成されるデータベースユーザーの名前を指定。 |
POSTGRES_PASSWORD | PostgreSQLに作成されるデータベースユーザーのパスワードを指定。 |
volumes | ボリュームの定義。 |
db-data | PostgreSQLコンテナ内のデータを永続化するためのボリュームを指定。 |
項目 | 説明 |
---|---|
pgadmin | pgAdmin 4サービスの定義。 |
image | 使用するDockerイメージを指定。 |
container_name | コンテナの名前を指定。 |
environment | 環境変数を設定するセクション。 |
PGADMIN_DEFAULT_EMAIL | pgAdmin 4のデフォルトの管理者メールアドレスを指定。 |
PGADMIN_DEFAULT_PASSWORD | pgAdmin 4のデフォルトの管理者パスワードを指定。 |
ports | ポートのマッピングを指定。 |
volumes | ボリュームの定義。 |
pgadmin4-data | pgAdmin 4コンテナ内のデータを永続化するためのボリュームを指定。 |
pgAdmin 4サービス
volumes | ボリュームの定義セクション。 |
db-data | PostgreSQLコンテナ内のデータを永続化するためのボリュームを定義。 |
pgadmin4-data | pgAdmin 4コンテナ内のデータを永続化するためのボリュームを定義。 |
ボリュームの定義
このcompose.yamlファイルでは、PostgreSQLとpgAdmin 4の2つのサービスが定義されています。PostgreSQLサービスはPostgreSQLデータベースを提供し、pgAdmin4サービスはWebベースの管理ツールとして動作します。また、PostgreSQLのデータは「db-data」という永続的なボリュームに保存され、pgAdmin4 の設定データは「pgadmin4-data」という永続的なボリュームに保存されます。pgAdmin4 はポート5050で公開され、デフォルトの管理者メールアドレスは「admin@example.com」、パスワードは「adminpassword」となっています。
コンテナの作成と実行
「docker compose up -d」コマンドを実行します。
このコマンドは、「compose.yaml」ファイルを配置した場所で実行する必要があります。
PS C:\Users\joeac\Desktop\docker\pgadminpostgre> docker compose up -d
[+] Running 29/2
✔ pgadmin 14 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 17.6s
✔ postgres 13 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 10.8s
[+] Running 2/5
- Network pgadminpostgre_default Created 0.8s
- Volume "pgadminpostgre_db-data" Created 0.8s
- Volume "pgadminpostgre_pgadmin4-data" Created 0.8s
✔ Container pgadmin_container Started 0.8s
✔ Container postgres_container Started
pgAdmin4コンテナへの接続
pgAdmin4コンテナに接続します。
・URLに「localhost:5050」と入力します。

・環境変数で設定した「Emailアドレス」と「パスワード」を入力し、「Japanese」を選択して「Login」ボタンをクリックします。

・「新しいサーバを追加」をクリックします。

・「General」タブで「名前」を入力します。

・「接続」タブで、ホスト名/アドレス、管理用データベース、ユーザ名、パスワードを入力して「保存」ボタンをクリックします。

PostgrSQLに接続されます。

これで、pgAdmin4を利用してPostgrSQL上のデータベースをGUIで操作できるようになります。