Django

DockerでPostgreSQLの環境を構築してpsqlでアクセスするまで

PostgreSQL環境をDockerで構築する方法についてまとめておきます。

なお、今回は環境として以下の環境を使用しています。

・Windows10 HOME
・WSL2 Ubuntu18.04

WSL2でのDocker環境の構築方法については以下をご覧ください。

PostgreSQLのDockerFileを作成する

基本的には、PostgreSQLの公式さんが提供している以下のリポジトリにあるDokcerFileとdocker-entrypoint.shをほぼコピペしております。

docker-library/postgres

最終的なディレクトリツリーはこんな感じになります。

  .
  ├── db
  │   └── Dockerfile
  │── .env
  └── docker-compose.yml

Dockerfileには以下の一文で十分です。

#Dockerfile

FROM postgres:latest

それから、以下のようなdocker-compose.ymlを作成します。

version: "3"
services:
  db:
    build:
      context: ./db
      dockerfile: Dockerfile
    container_name: db-container
    ports:
      - "5432:5432"
    env_file:
      - ./.env
    volumes:
      - ./db:/docker-entrypoint-initdb.d

ユーザ名やパスワードについては、environmentにハードコーディングしている記事などが多いですが、あまりおすすめできません。

そのため、今回はdocker-compose.ymlと同じディレクトリに.envファイルを作成しています。
.envファイルには、適当に以下のようなデータを書いておきます。

POSTGRES_USER=postgres
POSTGRES_PASSWORD=Password
PGPASSWORD=Password
POSTGRES_DB=db
DATABASE_HOST=localhost

これで準備は完了です。
最後にdocker-compose up -d --buildコマンドでコンテナを起動しましょう!

作成したPostgreSQLにアクセス!

さて、せっかくDBを立てたので、アクセスできることを確認しておきましょう。

PostgreSQLにアクセスするためには、SQLクライアントであるpsqlをインストールする必要があります。
これは、postgresql-clientでインストールすることができます。

以下のコマンドでインストールからアクセス確認まで進めてしまいます。

#クライアントをインストールする
sudo apt install postgresql-client -y

#PostgreSQLにログイン!
PGPASSWORD=Password psql -h db -U postgres

まとめ

今回はDjangoの開発環境をDockerで構築する中で学んだことをまとめてみました。

こんなに簡単に環境が出来上がるなんてDockerは便利ですねー。

COMMENT

メールアドレスが公開されることはありません。