Docker for WindowsでPostgres+pgAdminのコンテナをたてる


はじめに

RustのdieselでPostgresに接続しようと思い、DockerでPostgresとpgAdmin4をたてました。
情報を探しても部分的にしかなかったので、備忘録的に残しておきます。

環境

Docker for WindowsでDocker Composeを使います。
Postgresは13.2、pgAdminは4.4.2を使います。

Volumeの作成

Windowsの場合、Postgresのコンテナを作る際 Volumeを作らずにマウントするとPermission Errorやらエラーが出るようです。
Docker for Windowsでpostgresのデータマウントができない人へ
Docker for Windows で postgres コンテナの Volume マウントを安全にする

ので、Volumeを作ります。

Postgres用
$ docker volume create postgres_volume

pgAdmin4用
$ docker volume create pgadmin4_volume

Containerの作成

以下のようにdocker-compose.yamlを用意します。

docker-compose.yaml
version: '3.7'
services:
    postgres:
        image: postgres:13.2-alpine
        container_name: postgres
        ports:
            - 5432:5432
        volumes:
            - postgres_volume:/var/lib/postgresql/data
        environment:
            POSTGRES_USER: root
            POSTGRES_PASSWORD: root
            POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
        hostname: postgres
        restart: always
        user: root

    pgadmin4:
        image: dpage/pgadmin4:5.0
        container_name: pgadmin4
        ports:
            - 8000:80
        volumes:
            - pgadmin4_volume:/var/lib/pgadmin
        environment:
            PGADMIN_DEFAULT_EMAIL: root
            PGADMIN_DEFAULT_PASSWORD: root
        hostname: pgadmin4
        depends_on:
          - postgres
        restart: always

volumes:
  postgres_volume:
    external: true
  pgadmin4_volume:
    external: true

立ち上げます。

$ docker-compose up

pgAdminへのアクセスと設定

localhost:8000にアクセスできればOKです(root/root)。

サーバー追加で、docker-compose.yamlに記載した内容を設定すればOKです。
参考画像

まとめ

Docker for WindowsでPostgres+pgAdminのコンテナを立ち上げる方法を紹介しました。
次回はこのPostgresにRustのdieselから接続するところを書きたいと思います。