Проект развертывается по той же схеме, что и tochka:
- один hostname:
APP_DOMAIN - mini app доступен по
${APP_BASE_PATH} - admin panel доступна по
${ADMIN_BASE_PATH} - backend API доступен по
${API_BASE_PATH} - внешний
gatewayподключается к общей Docker-сетиGATEWAY_NETWORK
Для production используется домен forever.etalonfood.com и маршруты в gateway/config/routes.yml:
- host: forever.etalonfood.com
routes:
- path: /app
upstream: http://forever-frontend:80
- path: /admin
upstream: http://forever-admin:80
- path: /api
upstream: http://forever-backend:8000
strip_prefix: false.
├── admin-panel
├── backend
├── frontend
├── scripts
├── .env
├── .env.example
├── docker-compose.yml
├── docker-compose.local.yml
└── README.md
Создайте .env, если его еще нет:
cp .env.example .envКлючевые переменные:
POSTGRES_DB=forever
POSTGRES_USER=forever
POSTGRES_PASSWORD=forever
APP_DOMAIN=forever.etalonfood.com
APP_BASE_PATH=/app
ADMIN_BASE_PATH=/admin
API_BASE_PATH=/api
CORS_ORIGINS=https://forever.etalonfood.com
GATEWAY_NETWORK=gateway-net
GUNICORN_WORKERS=4
GUNICORN_TIMEOUT=60Важно:
GATEWAY_NETWORKзадает имя внешней Docker-сети, в которую должны быть подключены иgateway, и сервисыforever- по умолчанию используется
gateway-net - backend ожидает API с префиксом
/api, поэтому для маршрута/apiв gateway обязательноstrip_prefix: false
Запуск на сервере:
./scripts/prod-up.shСкрипт:
- читает
GATEWAY_NETWORKиз.env - при необходимости создает внешнюю Docker-сеть
- запускает
postgres,backend,frontend,admin-panel
После запуска сервисы доступны для gateway по именам:
http://forever-frontend:80http://forever-admin:80http://forever-backend:8000
Остановка:
./scripts/prod-stop.shЛокальный запуск без gateway:
./scripts/local-dev.shБудут доступны:
- mini app:
http://127.0.0.1:3000/ - admin panel:
http://127.0.0.1:3001/ - backend API:
http://127.0.0.1:8000/api/ - healthcheck:
http://127.0.0.1:8000/health
Локальный override docker-compose.local.yml:
- публикует backend на
127.0.0.1:8000 - пересобирает frontend/admin с прямым API
http://127.0.0.1:8000/api - собирает SPA с base path
/, чтобы локально не требовались/appи/admin
Остановка локальных сервисов:
./scripts/local-dev-stop.shОсновной docker-compose.yml предназначен для production-схемы с gateway:
frontendиadmin-panelсобираются как nginx-контейнеры со статикой внутри- backend не публикует порт наружу, а доступен gateway через external-сеть
frontendимеет aliasforever-frontendadmin-panelимеет aliasforever-adminbackendимеет aliasforever-backend
Локальный docker-compose.local.yml только переопределяет нужное для дев-режима.
- старый сценарий с host nginx и отдельными доменами
app-demo,admin-demo,api-demoбольше не является актуальным для этого проекта - файл
nginx/nginx.confможно рассматривать как legacy-конфигурацию, текущий production-путь идет через общий проектgateway