【Docker】Docker compose ~ Pgweb/pgAdmin ~

■ はじめに

https://dk521123.hatenablog.com/entry/2023/07/20/025544

の続き。

PostgreSQL を docker compose で作ったが、
やっぱり開発をスムーズにするには Web UI が欲しいなっと
思ったので、調べてみた。
# PostgreSQL といえば、pgAdmin だと思っていたけど
# Pgwebってのもある

なお、以下の関連記事で行ったものをベースにしている。
(特にPostgreSQL部分は、以下を参照のこと)

Docker compose ~ PostgreSQL
https://dk521123.hatenablog.com/entry/2023/07/20/025544

目次

【1】Pgweb
 1)動作確認
【2】pgAdmin
 1)動作確認
 2)サーバ設定を省略する方法

【1】Pgweb

version: '3'

services:
  postgres:
    image: postgres:latest
    container_name: postgres
    hostname: postgresql
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      PGPASSWORD: password
      POSTGRES_DB: sample
      TZ: "Asia/Tokyo"
    ports:
      - 5431:5432
    volumes:
      - ./init-db:/docker-entrypoint-initdb.d
  pgweb:
    container_name: pgweb
    hostname: pgweb
    restart: always
    image: sosedoff/pgweb
    ports:
      - "18081:8081"
    environment:
      # Refer to https://github.com/sosedoff/pgweb/wiki/Usage
      # postgres://user:password@host:port/database?sslmode=[mode]
      DATABASE_URL: postgres://postgres:password@postgresql:5432/sample?sslmode=disable
    depends_on:
      - postgres
volumes:
  postgres:
    name: v_postgres

1)動作確認

# 起動
sudo docker compose up -d

# ブラウザで以下に接続

http://localhost:18080/

# 削除
sudo docker compose down -v

参考文献
https://qiita.com/ihatov08/items/e33dae179363218da599
http://serverarekore.blogspot.com/2021/11/dockerpgwebpostgresql14.html

【2】pgAdmin

version: '3'

services:
  postgres:
    image: postgres:latest
    container_name: postgres
    hostname: postgresql
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      PGPASSWORD: password
      POSTGRES_DB: sample
      TZ: "Asia/Tokyo"
    ports:
      - 5431:5432
    volumes:
      - volume_postgres:/var/lib/postgresql/data
      - ./init-db:/docker-entrypoint-initdb.d
  pgadmin:
    image: dpage/pgadmin4
    container_name: pgadmin
    hostname: pgadmin
    restart: always
    ports:
      - 18080:80
    volumes:
      - volume_pgadmin:/var/lib/pgadmin
    environment:
      PGADMIN_DEFAULT_EMAIL: demo@sample.com
      PGADMIN_DEFAULT_PASSWORD: password
    depends_on:
      - postgres
volumes:
  volume_postgres:
    name: v_postgres
  volume_pgadmin:
    name: v_pgadmin

1)動作確認

# 起動
sudo docker compose up -d

# ブラウザで以下に接続

http://localhost:18081/

以下で、ログインする
* Email Andree/Username: demo@sample.com
* Password: password

[Servers]を右クリックし、[Register]-[Server...]を選択し
以下を入力し、「Save」ボタン押下
~~~~~~
[General]
name: 任意(e.g. sample)

[Connect]
Hostname/address: postgresql
Post: 5432
Maintenance database: sample
Username: postgres
Password: password
Save password: 任意
~~~~~~

# 削除
sudo docker compose down -v

2)サーバ設定を省略する方法

* 以下を参考にしてできた。

https://stackoverflow.com/questions/64620446/adding-postgress-connections-to-pgadmin-in-docker-file

* 以下のGithubも参照

https://github.com/dk521123/HelloWorldForFlinkWithPostgreSQL

フォルダ構成

* 以下をフォルダ・ファイルを追加

+ init-pgadmin
  + pgpass
  + servers.json

pgpass

# ホスト名:ポート番号:データベース名:ユーザ名:パスワード
postgresql:5432:sample:postgre:password

servers.json

{
  "Servers": {
    "1": {
      "Name": "sample",
      "Group": "docker_postgres_group",
      "Host": "postgresql",
      "Port": 5432,
      "MaintenanceDB": "sample",
      "Username": "postgres",
      "PassFile": "/pgpass",
      "SSLMode": "disable"
    }
  }
}

compose.yaml

# ★部分を追加
    volumes:
      - volume_pgadmin:/var/lib/pgadmin
      - ./init-pgadmin/servers.json:/pgadmin4/servers.json # ★preconfigured servers/connections
      - ./init-pgadmin/pgpass:/pgpass # ★passwords for the connections in this file

参考文献
https://qiita.com/Akhr/items/8d5b5127ee971a640253

関連記事

Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/02/25/000000
Docker ~ 基本編 / docker network ~
https://dk521123.hatenablog.com/entry/2022/04/30/000000
Docker compose ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/05/21/222910
Docker compose ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/04/11/000000
Docker compose ~ PostgreSQL
https://dk521123.hatenablog.com/entry/2023/07/20/025544
Flink + PostgreSQL を docker compose で構築する
https://dk521123.hatenablog.com/entry/2023/07/28/220039