PostgreSQL の使用方法
起動方法(コンテナ)
Docker デーモン(DockerDesktop)を立ち上げる。
docker-compose.yml ファイルを作成して、下記コマンド実行。
docker-compose up -d
「-d」は、バックグラウンド実行のオプション
docker-compose.yml
ブラウザでの確認のための pgweb の立ち上げも同時に行っている。
version: '3.8'
services:
# PostgreSQL立ち上げ
db:
image: postgres:14-alpine
# コンテナが落ちた際の自動再起動の設定
restart: always
environment:
TZ: ${TIME_ZONE} # コンテナ自体のタイムゾーンの設定(デフォルトはUTCなので9時間ずれ)
PGTZ: ${TIME_ZONE} # ポスグレのタイムゾーン設定
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
ports:
- "5432:5432"
volumes:
# コンテナ停止してもdataを残したいなら必須の設定
# ローカルの隠しフォルダにデータがマウントされる
# データ削除の為には、docker volume pruneなど必要
# - postgres_data:/var/lib/postgresql/data
# 右辺の位置にsqlを置くと、起動時に自動実行されるため、initにsqlを置いてマウントしている
- ./init:/docker-entrypoint-initdb.d
# デフォルト設定では、同じcompose-file内のサービスは同じネットワークに入るので、ローカル開発では基本不要な設定
# networks:
# - app_network
# DBをhtmlで確認するためのpgweb立ち上げ
# 現状、initの事前実行でdb起動が遅れるためか、初回はpgwebが起動失敗で落ちる
pgweb:
image: sosedoff/pgweb
container_name: "pgweb"
ports:
- "8081:8081"
environment:
# 自動でログインするための変数設定。これがないと起動のたびにDBのURLを利用したログインが必要
# フォーマットはpostgres://ユーザ名:パスワード@DBサービス名:5432/DB名?sslmode=disable
PGWEB_DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?sslmode=disable
depends_on:
- db
# networks:
# - app_network
# volumes:
# postgres_data:
.env
以下は一例
TIME_ZONE=Asia/Tokyo
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
POSTGRES_DB=mydb