Add local production test environment setup

- docker-compose.local.yml: 本番Dockerfile使用・Traefikなし・ポート直接公開
- deploy_local.sh: ローカル環境のビルド・起動スクリプト
- sync_db.sh: サーバーDBダンプをローカルに取り込むスクリプト
- document/20_ローカルテスト環境.md: 手順ドキュメント

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Akira
2026-04-06 13:33:28 +09:00
parent 4a1db5ef27
commit a42ccb5cda
4 changed files with 234 additions and 0 deletions

46
sync_db.sh Executable file
View File

@@ -0,0 +1,46 @@
#!/bin/bash
# サーバーのDBをローカルに同期するスクリプト
#
# 事前準備サーバー側でkeinasystemユーザーとして実行:
# docker exec keinasystem_db pg_dump -U keinasystem keinasystem > /tmp/keinasystem_dump.sql
#
# 使用: bash sync_db.sh
set -e
REMOTE_HOST="keinafarm"
LOCAL_DUMP="/tmp/keinasystem_dump.sql"
echo "=== DBSync: サーバー → ローカル ==="
# 1. サーバーからdumpファイルをscpで取得
echo "[1/4] サーバーからダンプファイルを取得..."
scp "$REMOTE_HOST:/tmp/keinasystem_dump.sql" "$LOCAL_DUMP"
echo " → ダンプ取得完了: $LOCAL_DUMP ($(du -sh $LOCAL_DUMP | cut -f1))"
# 2. ローカルのDBコンテナが起動しているか確認
echo "[2/4] ローカルDBコンテナを確認..."
if ! docker compose -f docker-compose.local.yml ps db 2>/dev/null | grep -q "running"; then
echo " → ローカルDBコンテナが起動していません。起動します..."
docker compose -f docker-compose.local.yml up -d db
echo " → DB起動待機中..."
sleep 10
fi
# 3. 既存データをドロップして復元
echo "[3/4] ローカルDBにリストア既存データをリセット..."
# DBを一旦削除して再作成してからリストア
docker compose -f docker-compose.local.yml exec -T db \
psql -U keinasystem -d postgres -c "DROP DATABASE IF EXISTS keinasystem;" --quiet
docker compose -f docker-compose.local.yml exec -T db \
psql -U keinasystem -d postgres -c "CREATE DATABASE keinasystem OWNER keinasystem;" --quiet
cat "$LOCAL_DUMP" | docker compose -f docker-compose.local.yml exec -T db \
psql -U keinasystem -d keinasystem --quiet
echo " → リストア完了"
# 4. クリーンアップ
echo "[4/4] 一時ファイル削除..."
rm -f "$LOCAL_DUMP"
echo ""
echo "=== 同期完了 ==="
echo "ローカルでの起動: bash deploy_local.sh"