Docker vs 公式インストーラー vs パッケージマネージャー:PostgreSQLとpgAdminのローカル環境構築方法

2024-04-02

DockerとpgAdminを使ってローカル環境でPostgreSQLを構築・接続する方法

このチュートリアルでは、DockerとpgAdminを使ってローカル環境でPostgreSQLを構築し、pgAdminを使って接続する方法を説明します。

前提条件

  • Dockerがインストールされていること

手順

  1. Dockerfileの作成

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

FROM postgres:14

ENV POSTGRES_USER postgres
ENV POSTGRES_PASSWORD postgres
ENV POSTGRES_DB postgres

RUN mkdir -p /var/lib/postgresql/data

CMD ["postgres", "-c", "CREATE USER $POSTGRES_USER WITH PASSWORD '$POSTGRES_PASSWORD'"]
CMD ["postgres", "-c", "CREATE DATABASE $POSTGRES_DB"]
CMD ["postgres", "-c", "ALTER USER $POSTGRES_USER WITH SUPERUSER"]

CMD ["postgres", "-D", "/var/lib/postgresql/data"]
  1. docker-compose.ymlの作成
version: "3"

services:
  postgres:
    build: .
    ports:
      - "5432:5432"
    volumes:
      - ./data:/var/lib/postgresql/data

  pgadmin:
    image: "dpage/pgadmin4"
    ports:
      - "8080:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: "[email protected]"
      PGADMIN_DEFAULT_PASSWORD: "admin"
  1. コンテナの起動

以下のコマンドを実行してコンテナを起動します。

docker-compose up -d
  1. pgAdminへの接続

ブラウザでhttp://localhost:8080を開きます。

ログイン画面が表示されるので、以下の情報を入力してログインします。

  • ユーザー名: admin

ログイン後、左側のメニューからServersを選択し、+ボタンをクリックします。

以下の情報を入力してPostgreSQLサーバーを追加します。

  • 名前: 任意の名前
  • ホスト名: localhost
  • ポート番号: 5432
  • ユーザー名: postgres

Saveボタンをクリックして保存します。

PostgreSQLサーバーが追加されると、左側のメニューに表示されます。

データベースを作成したり、テーブルを作成したり、クエリを実行したりすることができます。

DockerとpgAdminを使うと、ローカル環境で簡単にPostgreSQLを構築することができます。

このチュートリアルを参考に、PostgreSQLをローカル環境で構築して、pgAdminを使って接続してみてください。




# Dockerfile

FROM postgres:14

ENV POSTGRES_USER postgres
ENV POSTGRES_PASSWORD postgres
ENV POSTGRES_DB postgres

RUN mkdir -p /var/lib/postgresql/data

CMD ["postgres", "-c", "CREATE USER $POSTGRES_USER WITH PASSWORD '$POSTGRES_PASSWORD'"]
CMD ["postgres", "-c", "CREATE DATABASE $POSTGRES_DB"]
CMD ["postgres", "-c", "ALTER USER $POSTGRES_USER WITH SUPERUSER"]

CMD ["postgres", "-D", "/var/lib/postgresql/data"]

# docker-compose.yml

version: "3"

services:
  postgres:
    build: .
    ports:
      - "5432:5432"
    volumes:
      - ./data:/var/lib/postgresql/data

  pgadmin:
    image: "dpage/pgadmin4"
    ports:
      - "8080:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: "[email protected]"
      PGADMIN_DEFAULT_PASSWORD: "admin"

このコードを使って、以下のコマンドを実行することで、ローカル環境にPostgreSQLとpgAdminを構築することができます。

docker-compose up -d



PostgreSQLとpgAdminを使ってローカル環境を構築する他の方法

公式のインストーラーを使う

PostgreSQLとpgAdminはそれぞれ公式のインストーラーが提供されています。

インストーラーをダウンロードして実行することで、簡単にPostgreSQLとpgAdminをインストールすることができます。

パッケージマネージャーを使う

多くのLinuxディストリビューションでは、PostgreSQLとpgAdminはパッケージマネージャーを使ってインストールすることができます。

例えば、Ubuntuの場合、以下のコマンドを実行することでインストールできます。

sudo apt install postgresql-14 pgadmin4

ソースコードからインストールする

詳細は以下の公式サイトを参照してください。

Docker以外にも、PostgreSQLとpgAdminを使ってローカル環境を構築する方法はいくつかあります。

自分の環境や目的に合った方法を選択してください。


postgresql docker pgadmin


【徹底解説】PostgreSQLテーブルが存在しない時のエラー「Cannot simply use PostgreSQL table name」の解決方法と原因

Cannot simply use PostgreSQL table name ("relation does not exist") エラーは、PHPスクリプトからPostgreSQLデータベースに接続しようとした際に、指定されたテーブルが存在しない場合に発生します。...


PostgreSQL: スキーマ接頭辞を使用してサーチパスを設定する方法

ユーザーレベルでサーチパスを設定するには、以下の ALTER USER コマンドを使用します。ここで、[ユーザ名] は、サーチパスを設定するユーザーの名前です。[スキーマ名1], [スキーマ名2] ... は、検索対象とするスキーマの名前をカンマ区切りで指定します。...


PostgreSQLで配列にない要素を取得する:NOT IN演算子以外の方法

PostgreSQLで、ある列の値が配列に存在しないかどうかを判定し、該当する行を取得するには、NOT IN演算子を使用します。これは、特定の値を除外したい場合や、複数の条件を組み合わせて検索したい場合に役立ちます。基本的な構文例:特定の値を除外する...


PostgreSQLのregexp_replace()関数を使ってJSON文字列をテキストに変換

json_extract_path() 関数を使うこの関数は、JSONオブジェクトから特定のキーの値を抽出するために使用できます。利点:特定のキーの値のみを抽出したい場合に便利です。複雑なJSON構造にも対応できます。キーパスを正しく指定する必要があるため、複雑なJSON構造の場合には難しくなる可能性があります。...


【永久保存版】PostgreSQLで曜日を抽出する方法 3選!今週の始まりは月曜日!?

extract() 関数は、日付/時刻値から年、月、日、曜日などの情報を取り出すことができます。曜日を取得するには、dow という引数を使用します。この引数は、0を日曜、1を月曜、6を土曜日として値を返します。このクエリは、your_table テーブルの date_field 列にある日付の曜日をすべて抽出します。結果は次のようになります。...