WindowsでWSL2とDockerDesktop、docker-composeの環境でポスグレとadminerを構築します.
adminerはPHP製のDB管理ツール.
用意するもの
- WSL2, DockerDesktop, docker, docker-composeをインスコ済の環境
docker-composeのyamlを記述
最初に適当なディレクトリ内にdocker-compose.yamlファイルを作り, ポスグレ用の設定を記述していきます.
データの永続化はpgdataという名前で設定済み.
コンテナ名やイメージのバージョンなどはお好みでどうぞ.
$ mkdir test-project && cd test-project
version: '3'
services:
postgres:
container_name: test-postgres
image: postgres:latest
restart: always
ports:
- "5432:5432"
volumes:
- ./postgres:/docker-entrypoint-initdb.d
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_USER: "testuser"
POSTGRES_PASSWORD: "testpass"
TZ: "Asia/Tokyo"
adminer:
container_name: test-adminer
image: adminer:latest
restart: always
ports:
- "8080:8080"
volumes:
pgdata:
初期化用SQL記述
次に, 初期化用のSQLをファイルに記述します.
SQLファイルの場所は上記yamlの10行目./postgres部分で指定しています.
$ mkdir postgres && touch postgres/init.sql
内容は適当です.
CREATE DATABASE testdb;
\c testdb;
DROP TABLE IF EXISTS test;
CREATE TABLE test (
id char(8) PRIMARY KEY,
name varchar(32),
date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
コンテナ起動
$ docker-compose up -d
[+] Running 2/3
⠴ Network test_default Created 0.6s
✔ Container test-adminer Started 0.6s
✔ Container test-postgres Started
Startedが表示されれば成功.
DockerDesktopからも, コンテナの状態を確認できます.

Adminerに接続
ブラウザからlocalhost:8080に接続.

ログイン画面が表示されるので,
データベース種類はPostgreSQLを選択.
サーバはyamlの3行目に書いたサーバ名で, 上記の場合postgresです.
ユーザ名とパスワードもyamlに記述した通りtestuserとtestpass.
データベースは入力しなくてもログイン後に選択できます.
これで構築は完了です.
コンテナを終了するときは, DockerDesktopから行うか, 以下のコマンドを入力.
$ docker-compose stop # コンテナ停止
$ docker-compose down # コンテナ削除