Migrate easysite from api_es to api_yal

- Remove api_es service, Dockerfile, all Go source files
- Remove api_es from docker-compose.yml, nginx-ssl.conf, .env, Makefile
- Replace nginx /api/ proxy with /api/v1/ → api_yal:8787
- Add amenity/upload domains, AuthResponse, GET /auth/me, GET /objects/my to api_yal
- Rewrite easysite frontend: types, composables, and all 5 pages to use api_yal DTOs
- Wire nuxt.config public.apiBase, add useObjects CRUD composable
- Update docs references from api_es to api_yal
This commit is contained in:
valitovgaziz
2026-06-12 10:14:38 +05:00
parent 64295b689b
commit 90a96b4125
80 changed files with 1940 additions and 5103 deletions
+5 -5
View File
@@ -41,7 +41,7 @@
│ • certbot - SSL сертификаты │
│ • analytics - Статистика (Node.js) │
│ • api_tp - API yalarba.ru (Go) │
│ • api_es - API easysite102.ru (Go) │
│ • api_yal - API easysite102.ru (Go) │
│ • api_bb - API Бегущий Башкир (Go) │
│ • easysite - SPA (Nuxt.js) │
│ • db - PostgreSQL (yalarba/easy) │
@@ -74,7 +74,7 @@
|-------|-----|----------------|---------------|
| `yalarba.ru` | SPA (Vue) | `api_tp:8080` | `/usr/share/nginx/yalarba/html` |
| `valitovgaziz.ru` | Статический сайт | - | `/usr/share/nginx/valitovgaziz/html` |
| `easysite102.ru` | SPA (Nuxt.js) | `easysite:3000` + `api_es:8088` | Прокси |
| `easysite102.ru` | SPA (Nuxt.js) | `easysite:3000` + `api_yal:8787` | Прокси |
| `begushiybashkir.ru` | SPA (Vue) | `api_bb:8080` | `/usr/share/nginx/begushiybashkir/html` |
| `xn--80abahjtcfl5d0a8di.xn--p1ai` | Альтернативный домен для Бегущий Башкир | `api_bb:8080` | `/usr/share/nginx/begushiybashkir/html` |
@@ -118,7 +118,7 @@
```
EMAIL=admin@example.com # Для Let's Encrypt
ALL_DOMAINS=yalarba.ru,valitovgaziz.ru... # Все домены для SSL
API_ES_APP_PORT=8088 # Порт API easysite
# API_ES убран, используется api_yal:8787
```
### Сервисные
@@ -141,14 +141,14 @@ STAGING=0 # 1 для тестового режима Let's Encrypt
| certbot | Проверка файла сертификата | - | 30s |
| analytics | `http://localhost:3000/health` | 3000 | 30s |
| api_tp | `http://localhost:8080/health` | 8080 | 30s |
| api_es | `http://localhost:8088/health` | 8088 | 30s |
| api_yal | `http://localhost:8787/health` | 8787 | 30s |
| api_bb | `http://localhost:8080/api/health` | 8080 | 30s |
| easysite | `http://localhost:3000/api/health` | 3000 | 30s |
| db, db_bb | `pg_isready -U postgres` | 5432 | 30s |
### Зависимости запуска
Nginx запускается только после подтверждения здоровья:
- `easysite`, `api_es`, `certbot`, `api_tp`, `api_bb`, `analytics`
- `easysite`, `api_yal`, `certbot`, `api_tp`, `api_bb`, `analytics`
## Волумы
+4 -58
View File
@@ -231,82 +231,28 @@ server {
}
# ============================================
# ЛОКАЦИЯ: API Backend для Easysite
# ЛОКАЦИЯ: API Backend для Easysite (api_yal)
# ============================================
location /api/ {
# Отдельный API endpoint для backend
proxy_pass http://api_es:8088/;
location /api/v1/ {
proxy_pass http://api_yal:8787;
# Заголовки прокси
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
# Таймауты как у основного приложения
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
# ========================================
# ДЕТАЛЬНЫЕ НАСТРОЙКИ CORS ДЛЯ OPTIONS
# ========================================
if ($request_method = OPTIONS ) {
# Динамический заголовок Origin из запроса
if ($request_method = OPTIONS) {
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE';
# Подробный список разрешенных заголовков
add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
# Время кэширования preflight ответа (20 дней)
add_header 'Access-Control-Max-Age' 1728000;
# Пустой ответ для OPTIONS
add_header 'Content-Length' 0;
add_header 'Content-Type' 'text/plain charset=UTF-8';
# Возвращаем 204 без тела ответа
return 204;
}
}
location /api_yal/ {
# Отдельный API endpoint для backend
proxy_pass http://api_yal:8787/;
# Заголовки прокси
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
# Таймауты как у основного приложения
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
# ========================================
# ДЕТАЛЬНЫЕ НАСТРОЙКИ CORS ДЛЯ OPTIONS
# ========================================
if ($request_method = OPTIONS ) {
# Динамический заголовок Origin из запроса
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE';
# Подробный список разрешенных заголовков
add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
# Время кэширования preflight ответа (20 дней)
add_header 'Access-Control-Max-Age' 1728000;
# Пустой ответ для OPTIONS
add_header 'Content-Length' 0;
add_header 'Content-Type' 'text/plain charset=UTF-8';
# Возвращаем 204 без тела ответа
return 204;
}
}