ローカル開発環境ガイド
ドキュメント
documentation/docs/content_02_quickstart/quickstart-01-getting-started.md - クイックスタート
- 「ローカル環境のリソースチューニング」セクション - Docker/PostgreSQL/HikariCP/nginx設定
documentation/docs/content_11_learning/26-performance-tuning/ - パフォーマンスチューニングガイド
docker-compose.yaml - PostgreSQL構成
docker-compose-mysql.yaml - MySQL構成
環境構成概要
┌─────────────────────────────────────────────────────────────┐
│ *.local.dev サブドメイン │
├─────────────────────────────────────────────────────────────┤
│ api.local.dev → nginx → idp-server-1/2 (8081/8082) │
│ mtls.api.local.dev → nginx → idp-server-1/2 (mTLS) │
│ auth.local.dev → app-view (認可UI) │
│ sample.local.dev → sample-web (サンプルRP) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ データ層 │
├─────────────────────────────────────────────────────────────┤
│ PostgreSQL Primary (:5432) ←→ Replica (:5433) │
│ Redis (:6379) - セッション/キャッシュ │
│ Mockoon (:3010) - 外部サービスモック │
└─────────────────────────────────────────────────────────────┘
サブドメイン設定
方法1: dnsmasq(macOS推奨)
# セットアップスクリプト実行
./scripts/setup-local-subdomain.sh
このスクリプトは以下を設定:
- dnsmasq による
*.local.dev のローカルDNS解決
- mkcert によるローカルSSL証明書の生成
方法2: /etc/hosts(手動設定)
dnsmasqが使えない環境向け:
# Linux / macOS
sudo sh -c 'echo "127.0.0.1 api.local.dev mtls.api.local.dev auth.local.dev sample.local.dev" >> /etc/hosts'
# Windows (管理者権限のPowerShell)
Add-Content -Path C:\Windows\System32\drivers\etc\hosts -Value "127.0.0.1 api.local.dev mtls.api.local.dev auth.local.dev sample.local.dev"
設定確認
# DNS解決の確認
ping -c 1 api.local.dev
nslookup api.local.dev
# 127.0.0.1 が返されれば正常
SSL証明書
mkcert によるローカル証明書
# mkcert インストール (macOS)
brew install mkcert
# ルートCA インストール
mkcert -install
# 証明書生成(setup-local-subdomain.sh が自動実行)
mkcert "*.local.dev"
証明書ファイルの場所:
config/certs/_wildcard.local.dev.pem - 証明書
config/certs/_wildcard.local.dev-key.pem - 秘密鍵
Docker Compose
PostgreSQL構成(推奨)
# 環境変数設定
cp .env.example .env
# または
./init-generate-env.sh postgresql
# ビルド・起動
docker compose build
docker compose up -d
MySQL構成
# 環境変数設定
./init-generate-env.sh mysql
# ビルド・起動
docker compose -f docker-compose-mysql.yaml build
docker compose -f docker-compose-mysql.yaml up -d
サービス一覧
| サービス |
ポート |
説明 |
nginx |
443 |
リバースプロキシ(api.local.dev / mtls.api.local.dev) |
idp-server-1 |
8081 |
idp-server インスタンス1 |
idp-server-2 |
8082 |
idp-server インスタンス2 |
app-view |
3000 |
認可UI(auth.local.dev) |
sample-web |
3001 |
サンプルRP(sample.local.dev) |
postgres-primary |
5432 |
PostgreSQL プライマリ |
postgres-replica |
5433 |
PostgreSQL レプリカ |
redis |
6379 |
Redis |
mockoon |
3010 |
外部サービスモック |
データベース
PostgreSQL Primary/Replica構成
# レプリケーション確認
./scripts/verify-replication.sh
# 個別起動(デバッグ用)
docker compose up -d postgres-primary postgres-replica redis
# マイグレーション実行
docker compose up flyway-migrator
接続情報
| 項目 |
Primary |
Replica |
| ホスト |
localhost |
localhost |
| ポート |
5432 |
5433 |
| データベース |
idp |
idp |
| ユーザー |
idp_app |
idp_app |
直接接続
# Primary
docker compose exec postgres-primary psql -U idp_app -d idp
# Replica
docker compose exec postgres-replica psql -U idp_app -d idp
初期設定
admin-tenant 初期化
# 設定ファイル生成
./init-admin-tenant-config.sh
# 初期化実行
./setup.sh
E2Eテスト用データ
./config/scripts/e2e-test-data.sh
よく使うコマンド
# ヘルスチェック
curl -v https://api.local.dev/actuator/health
# ログ確認
docker compose logs -f idp-server-1
docker compose logs -f nginx
# 再起動
docker compose restart idp-server-1 idp-server-2
# 全停止
docker compose down
# 全削除(ボリューム含む)
docker compose down -v
# E2Eテスト
cd e2e && npm test
トラブルシューティング
サブドメイン関連
| 問題 |
原因 |
解決策 |
ping api.local.dev 失敗 |
dnsmasq停止 |
brew services restart dnsmasq または /etc/hosts 手動設定 |
| DNS解決が127.0.0.1以外 |
他DNSリゾルバ優先 |
/etc/resolver/local.dev ファイル確認 |
| SSL証明書エラー |
ルートCA未インストール |
mkcert -install 実行 |
Docker関連
| 問題 |
原因 |
解決策 |
| ポート競合 |
他サービスがポート使用中 |
lsof -i :5432 で確認、競合サービス停止 |
| コンテナ起動失敗 |
依存サービス未起動 |
docker compose up -d postgres-primary redis を先に実行 |
| ディスク容量不足 |
Dockerボリューム肥大 |
docker system prune -a で不要リソース削除 |
データベース関連
| 問題 |
原因 |
解決策 |
| レプリケーション失敗 |
WAL設定不正 |
./scripts/verify-replication.sh でステータス確認 |
| 接続拒否 |
認証設定不正 |
.env のDB認証情報確認 |
| マイグレーション失敗 |
スキーマ不整合 |
docker compose down -v で初期化後、再実行 |
アプリケーション関連
| 問題 |
原因 |
解決策 |
| 502 Bad Gateway |
idp-server未起動 |
docker compose logs idp-server-1 でログ確認 |
| 認証失敗 |
admin-tenant未初期化 |
./setup.sh 実行 |
| E2Eテスト失敗 |
テストデータ未設定 |
./config/scripts/e2e-test-data.sh 実行 |
関連スキル
| スキル |
用途 |
/onboarding |
プロジェクト全体像・学習ロードマップ |
/architecture |
アーキテクチャ・レイヤー構造 |
/operations |
運用・監視 |