サーバーより新しいマイグレーションがローカルに存在する場合、 リストア後にmigrateを実行しないと500エラーになるバグを修正。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
95 lines
2.3 KiB
Markdown
95 lines
2.3 KiB
Markdown
# ローカルテスト環境(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`)を使用
|