このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

pgAdmin4とPostgreSQLコンテナ

ここでは、Docker Composeコマンドを使ったpgAdmin4とPostgreSQLコンテナの構築例を紹介します。

pgAdmin4とは

まず、はじめにpgAdmin4について解説しておきます。

 MySQLやMariaDBをGUIで操作ツールにphpMyAdminがあったように、PostgrSQLにもGUIでアクセスできるツールがあります。

 pgAdmin4(ビージーアドミンフォー)は、オープンソースのデータベース管理ツールです。PostgreSQLデータベースを効果的に管理するためのWebベースのユーザーインターフェースを提供します。pgAdmin4は、データベースの作成、テーブルの設計、クエリの実行、ユーザーの管理など、多くの一般的なデータベース管理タスクを実行できる強力なツールです。

 pgAdmin4は、PostgreSQLコミュニティによって開発およびサポートされており、多くのプラットフォームで利用できます。Webベースのインターフェースを通じて、データベース管理者や開発者は簡単にPostgreSQLサーバーにアクセスし、データベースの状態を確認し、操作を行うことができます。

URL:https://www.pgadmin.org/

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コンテナ化されるサービスを定義するセクション。
postgresPostgreSQLサービスの定義。
image使用するDockerイメージを指定。
container_nameコンテナの名前を指定。
environment環境変数を設定するセクション。
POSTGRES_DBPostgreSQLに作成されるデータベースの名前を指定。
POSTGRES_USERPostgreSQLに作成されるデータベースユーザーの名前を指定。
POSTGRES_PASSWORDPostgreSQLに作成されるデータベースユーザーのパスワードを指定。
volumesボリュームの定義。
db-dataPostgreSQLコンテナ内のデータを永続化するためのボリュームを指定。
PostgreSQLサービス
項目説明
pgadminpgAdmin 4サービスの定義。
image使用するDockerイメージを指定。
container_nameコンテナの名前を指定。
environment環境変数を設定するセクション。
PGADMIN_DEFAULT_EMAILpgAdmin 4のデフォルトの管理者メールアドレスを指定。
PGADMIN_DEFAULT_PASSWORDpgAdmin 4のデフォルトの管理者パスワードを指定。
portsポートのマッピングを指定。
volumesボリュームの定義。
pgadmin4-datapgAdmin 4コンテナ内のデータを永続化するためのボリュームを指定。

pgAdmin 4サービス
volumesボリュームの定義セクション。
db-dataPostgreSQLコンテナ内のデータを永続化するためのボリュームを定義。
pgadmin4-datapgAdmin 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で操作できるようになります。