Laravel の公式ドキュメントが MySQL を使う前提になっているため、PostgreSQL を使うための設定をメモしておく。
(いろいろとまだ理解できていないので、あとで修正するかも)
前提条件
Laradock を使って Laravel をインストール済みであること。
.env (ホスト)
ホストからコンテナ内の PostgreSQL に接続する際に、すでに起動している PostgreSQL と競合しないようにポート番号 POSTGRES_PORT
を変更しておく。
.env
# POSTGRES_DB=default
POSTGRES_DB=sample_db
POSTGRES_USER=default
POSTGRES_PASSWORD=secret
# POSTGRES_PORT=5432
POSTGRES_PORT=54320
POSTGRES_ENTRYPOINT_INITDB=./postgres/docker-entrypoint-initdb.d
.env (コンテナ)
DB_HOST
を postgres
に変更しておく。
docker-compose exec workspace bash
.env
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
# DB_DATABASE=default
DB_DATABASE=sample_db
DB_USERNAME=default
DB_PASSWORD=secret
データベース作成
コンテナ内に入り、psql
コマンドで DB 接続し、データベース sample_db
を作成する。
docker-compose exec workspace bash
psql -U default -h postgres
create database sample_db;
migrate を実行し、sample_db
にテーブルが作られていれば正常に動作している(はず)。
php artisan migrate
コンテナ起動・停止
# 起動
docker-compose up -d nginx postgres
# 停止
docker-compose stop
# 状態確認
docker-compose ps
ホストからのDB接続
DBeaver から繋ぐ際の設定を載せておく。