docker composeを使ってPostgreSQLを構築する

docker composeを使ってPostgreSQLを構築する

docker composeを使ってpostgresとwebの管理ツールpgadminを構築するまでの手順を記述してます。

環境

  • OS ubuntu20.10
  • docker 19.03.13
  • docker-compose 1.27.4

docker-compose.yml作成

以下の内容で作成します。

version: '3'

services:
  postgres:
    image: postgres:latest
    restart: always
    environment:
      POSTGRES_USER: mebee
      POSTGRES_PASSWORD: password
      PGPASSWORD: password123
      POSTGRES_DB: sample
      TZ: "Asia/Tokyo"
    ports:
      - 5432:5432
    volumes:
      - postgres:/var/lib/postgresql/data

  pgadmin:
    image: dpage/pgadmin4
    restart: always
    ports:
      - 81:80
    environment:
      PGADMIN_DEFAULT_EMAIL: info@mebee.info
      PGADMIN_DEFAULT_PASSWORD: password
    volumes:
      - pgadmin:/var/lib/pgadmin
    depends_on:
      - postgres

volumes:
  postgres:
  pgadmin:

実行

実行します。

docker-compose up -d

設定ファイルなどは、以下のパスにあります。

/var/lib/docker/volumes/postgres-data/_data

pgadmin起動

ブラウザから http://プライベートIP or サーバーアドレス:81 にアクセスします。

言語に「Japanese」を選択して、ymlに記述した内容でログインします。

PGADMIN_DEFAULT_EMAIL: info@mebbe.info
PGADMIN_DEFAULT_PASSWORD: password

構築したpostgresを追加します。
「新しいサーバーを追加」をクリックします。

任意の名称を設定します。

必要情報を入力します。

データベース「sample」が作成されていることが確認できます。

直接コンテナに入って、操作することも可能です。

docker exec -it post_postgres_1 bash

root@feb781b8f774:/# psql -d sample -U mebee

psql (13.1 (Debian 13.1-1.pgdg100+1))
Type "help" for help.

sample=#

コンテナに入らなくても、psqlが使用できれば接続することが可能です。

psql -h 0.0.0.0 -p 5432 -d sample -U mebee

<出力結果>
Password for user mebee:
psql (12.5 (Ubuntu 12.5-0ubuntu0.20.10.1), server 13.1 (Debian 13.1-1.pgdg100+1))
WARNING: psql major version 12, server major version 13.
         Some psql features might not work.
Type "help" for help.

psqlが使用できなければ、以下のコマンドでインストール可能です。

sudo apt-get install postgresql-client