Files
keinasystem/sync_db.sh
Akira a42ccb5cda 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>
2026-04-06 17:32:23 +09:00

47 lines
1.8 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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"