こんにちは!データベースと日々格闘している君なら、一度は「ローカルのPostgreSQL環境をサクッと構築して、サクッとGUIで中身を確認したい」と思ったことがあるはずだ。
開発の現場では、手元のマシンを汚さずに、かつ本番に近い環境をいかに一瞬で立ち上げるかがエンジニアの機動力を左右する。今日は、DockerとpgAdmin 4を使って、誰でも迷わず3分で最高に快適なPostgreSQL管理環境を手に入れる方法を伝授しよう。
これをマスターすれば、毎日のデータベース作業が劇的に楽になりますよ。さあ、一緒に手を動かしていこう!
—
なぜDockerでpgAdminなのか?
まず前提として、データベースのGUIクライアント(pgAdminやDBeaverなど)を自分のOSに直接インストールするのは、実はあまりおすすめしない。なぜなら、OSのバージョンアップやライブラリの競合で、ある日突然ツールが起動しなくなるといった「環境依存のトラブル」に悩まされるからだ。
そこで登場するのが Docker だ。
アプリケーションを「コンテナ」というカプセルに閉じ込めることで、どのパソコンで動かしても全く同じ環境を完全再現できる。今回は、PostgreSQL本体と、それを操作するためのWebベースGUIである「pgAdmin 4」を、Docker Composeを使ってワンコマンドで連動させてみせる。
—
1. 準備するものは `docker-compose.yml` だけ
余計なインストーラをポチポチダウンロードする必要はない。適当な作業ディレクトリ(例: `pg-environment` など)を一つ作り、その中に `docker-compose.yml` というファイルをたった1つ作成してほしい。
以下のコードをそのままコピペすればOKだ。プロの現場でもそのまま通用する、ネットワークと永続化(データ保存)を考慮した実戦的な設定になっている。
version: ‘3.8’
services:
# ==========================================
# 1. PostgreSQL データベースコンテナ
# ==========================================
postgres:
image: postgres:15-alpine # 軽量でセキュアなAlpine版を採用
container_name: postgres_db
environment:
POSTGRES_USER: postgres_user # 接続ユーザー名
POSTGRES_PASSWORD: postgres_password # 接続パスワード
POSTGRES_DB: sample_db # 初めに自動作成するデータベース名
ports:
- “5432:5432” # ホストの5432をコンテナの5432にマポート
volumes:
- pgdata:/var/lib/postgresql/data # データの永続化(コンテナを消してもデータが消えない)
networks:
- pg-net
# ==========================================
# 2. pgAdmin 4 (GUIクライアント) コンテナ
# ==========================================
pgadmin:
image: dpage/pgadmin4:latest
container_name: pgadmin_gui
environment:
PGADMIN_DEFAULT_EMAIL: admin@example.com # pgAdminログイン用のメールアドレス
PGADMIN_DEFAULT_PASSWORD: admin_password # pgAdminログイン用のパスワード
ports:
- “8080:80” # ホストの8080番ポートでブラウザからアクセス可能にする
volumes:
- pgadmin_data:/var/lib/pgadmin # 設定やサーバー情報を永続化
networks:
- pg-net
depends_on:
- postgres # PostgreSQLが先に起動するよう制御
==========================================
共通ネットワークとボリュームの定義
==========================================
networks:
pg-net:
driver: bridge
volumes:
pgdata:
pgadmin_data:
ここがエンジニアのこだわりポイント
- `postgres:15-alpine` の選択: 無駄な機能が削ぎ落とされた軽量イメージを使うことで、起動速度が爆発的に上がり、ディスク容量も節約できる。
- ボリューム設定 (`volumes`): コンテナを `docker compose down` で破棄しても、データベースのデータやpgAdminの設定が消えないようにホスト側にマウントしている。これがないと、コンテナを消すたびにデータが消えて泣くことになる。
—
2. 魔法のコマンドで環境を起動する
ファイルが用意できたら、ターミナル(端末)を開いてそのディレクトリに移動し、以下のコマンドを叩くだけだ。
docker compose up -d
`-d` オプションは「バックグラウンドで静かに動かしてね」というデタッチモードの合図だ。
初回はDockerイメージのダウンロードが発生するため少し時間が架かるが、数秒待てば、あなたのローカルマシン上にPostgreSQLとpgAdminの強固な要塞が完成する。
—
3. ブラウザからpgAdminへアクセスし、HelloWorldをキメる
さあ、いよいよ動作確認だ。ここからが本番だよ。
1. ブラウザ(ChromeやSafariなど)を開き、以下のURLにアクセスする。
👉 `http://localhost:8080`
2. pgAdminのログイン画面が表示されたら、`docker-compose.yml` で設定した認証情報を入力する。
- Email: `admin@example.com`
- Password: `admin_password`
ログインに成功すると、洗練されたpgAdmin 4のダッシュボード(WebUI)が君を迎え入れてくれる。
データベースサーバーの登録(接続設定)
初期画面の「Add New Server」をクリックして、PostgreSQLコンテナと繋ぎに行こう。
- Generalタブ:
- Name: `Local-Postgres` (自分が分かりやすい名前でOK)
- Connectionタブ:
- Host name/address: `postgres` (ここが超重要! Dockerネットワーク内ではサービス名の `postgres` がそのままホスト名として名前解決されるため、`localhost` ではなく `postgres` と書くのが鉄則だ)
- Port: `5432`
- Maintenance database: `sample_db`
- Username: `postgres_user`
- Password: `postgres_password`
「Save」を押せば、左側のツリービューに今登録したサーバーが現れ、パズルのピースがカチリとハマるように接続が完了する!
—
4. 動作確認(HelloWorldクエリの実行)
無事に繋がった感動を噛みしめながら、簡単なテーブルを作ってデータを覗いてみよう。
1. 左側のツリーから `Local-Postgres` > `Databases` > `sample_db` を展開する。
2. `Schemas` > `public` を右クリックし、「Query Tool」 を選択する。
3. 開いたエディタ画面に、以下のSQLを貼り付けて、稲妻マーク(Executeボタン / `F5`)を押す。
— 1. テーブルの作成
CREATE TABLE greetings (
id SERIAL PRIMARY KEY,
message VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
— 2. データの挿入 (HelloWorld!)
INSERT INTO greetings (message) VALUES (‘Hello, Docker & pgAdmin World!’);
— 3. データの取得
SELECT FROM greetings;
画面下部の「Data Output」タブに、挿入したメッセージが表示されたかい?
おめでとう!これで、君のローカル環境には完璧なPostgreSQL & pgAdminの開発基盤が構築された。
—
まとめ
DockerとDocker Composeを使えば、複雑なミドルウェアのインストール地獄から一瞬で解放される。
「環境構築に時間をかけず、本質的なコーディングやデータベース設計に集中する」――これこそが、モダンな一流エンジニアのスタイルだ。
今日の夕方からは、この環境を使って思い切りデータベースをいじり倒してほしい。あなたの開発ライフがより快適で刺激的なものになることを応援しているよ!