# ローカルテスト環境（Ubuntu PC）

本番同等の環境をローカルで起動し、サーバーのデータで動作確認するための手順。

---

## 構成

| ファイル | 用途 |
|---------|------|
| `docker-compose.local.yml` | 本番用Dockerfileを使用、Traefikなし、ポート直接公開 |
| `deploy_local.sh` | ローカル環境のビルド・起動 |
| `sync_db.sh` | サーバーのDBダンプをローカルに取り込む |
| `.env` | 本番と同じ環境変数（git管理外） |

アクセス先：
- フロントエンド: http://localhost:3000
- バックエンドAPI: http://localhost:8000/api/

---

## 初回セットアップ

### 1. .env を作成

```bash
cp .env.production.example .env
# .env に本番と同じ値を設定する
```

### 2. ローカル環境を起動

```bash
bash deploy_local.sh
```

ビルド（初回は10〜15分）→ 起動 → マイグレーションが自動実行される。

### 3. サーバーのDBを同期

**サーバー側で実行**（keinasystemユーザーで）:
```bash
docker exec keinasystem_db pg_dump -U keinasystem keinasystem > /tmp/keinasystem_dump.sql
```

**ローカル側で実行**:
```bash
bash sync_db.sh
```

> `sync_db.sh` はリストア後に自動でマイグレーションを実行する。サーバーより新しいマイグレーションがローカルにある場合でも正しく動作する。

---

## 2回目以降の起動

```bash
# 停止中の場合は起動
docker compose -f docker-compose.local.yml up -d

# 停止
docker compose -f docker-compose.local.yml down
```

コードを変更した場合は再ビルドが必要：
```bash
bash deploy_local.sh
```

---

## DBの再同期

サーバーのデータをローカルに反映したい時。

**サーバー側**（keinasystemユーザーで）:
```bash
docker exec keinasystem_db pg_dump -U keinasystem keinasystem > /tmp/keinasystem_dump.sql
```

**ローカル側**:
```bash
bash sync_db.sh
```

> **注意**: ローカルのDBデータは上書きされる。ローカルで加えた変更は失われる。

---

## 注意事項

- `.env` は gitignore 対象（コミットしない）
- ローカルDBは `postgres_data_local` ボリュームに保存（本番の `postgres_data` とは別）
- `sync_db.sh` は SSH設定 `keinafarm`（`~/.ssh/config`）を使用
