Files
social-graph/deploy/README.md
T
gitrusprusandCursor 5e0af42fce Add local-first SPA architecture and containerized production deploy.
Move data access to use-cases and IndexedDB repositories with optional
remote fallback, changelog/sync ports, and encrypted local backup.
Add production Docker Compose (nginx frontend + optional backend) and
Apache host proxy configuration for deployment.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-29 16:08:02 +03:00

92 lines
2.8 KiB
Markdown
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.
# Production deploy (контейнеры + прокси на хосте)
Схема:
```text
[Прокси на хосте :80/:443]
→ frontend-контейнер (nginx :8080 на хосте)
→ backend-контейнер (gunicorn :8000, только при remote)
```
SPA-маршрутизация (`try_files``index.html`) выполняется **внутри** frontend-контейнера.
## 1. Подготовка
```bash
cd /opt/social-graph
cp deploy/.env.prod.example deploy/.env.prod
# отредактируйте deploy/.env.prod при необходимости
```
## 2. Local-first (только frontend)
Рекомендуется для конфиденциальности — данные в браузере (IndexedDB).
```bash
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod build frontend
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod up -d frontend
```
Проверка:
```bash
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8080/
# ожидается 200
```
## 3. Прокси на хосте
### Apache2
```bash
sudo a2enmod proxy proxy_http headers
sudo cp deploy/apache/social-graph.conf /etc/apache2/sites-available/social-graph.conf
# ServerName и порты (8080 / 8000) — по вашему .env.prod
sudo a2ensite social-graph.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
```
### nginx на хосте
См. `deploy/proxy/nginx-host.conf.example`.
## 4. Remote mode (frontend + backend)
В `deploy/.env.prod`:
```env
VITE_DATA_MODE=remote
DJANGO_SECRET_KEY=...
ALLOWED_HOSTS=your-domain.com
```
Пересоберите frontend (режим зашивается при build) и поднимите оба сервиса:
```bash
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod build
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod up -d frontend
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod --profile with-backend up -d backend
```
В `deploy/apache/social-graph.conf` раскомментируйте блок `ProxyPass /api ...` **перед** `ProxyPass /`.
## 5. Обновление
```bash
git pull
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod build frontend
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod up -d frontend
# при remote — также build/up backend
sudo systemctl reload apache2 # или nginx -s reload
```
## Порты по умолчанию
| Сервис | Хост (loopback) | Внутри контейнера |
|----------|-----------------|-------------------|
| frontend | 127.0.0.1:8080 | nginx :80 |
| backend | 127.0.0.1:8000 | gunicorn :8000 |
Наружу открыт только прокси на хосте (80/443).