# Окружение ## Безопасный локальный контур Для локальной разработки добавлен отдельный контур, который не использует продовые доступы: - compose-файл: `environments/docker-compose.local.yml`; - переменные Docker Compose: `local/.env.local`; - пример переменных: `local/.env.local.example`; - локальный backend env: `apps/backend/.env` и `apps/backend/.env.local`; - локальный cabinet env: `apps/cabinet/.env` и `apps/cabinet/.env.local`; - seed PostgreSQL: `local/postgres/init`; - seed локального Bitrix MySQL: `local/mysql-bitrix/init`. Все подключения направлены только на Docker-сервисы `postgres-local`, `bitrix-mysql-local` и `redis-local`. ```bash make local-up make local-seed make local-down ``` Локальные базы: - `sova_backend_local` - основная БД backend; - `sova_cabinet_local` - основная БД cabinet; - `sova_bitrix_local` - mock БД Bitrix на MySQL. Внешние интеграции в local env заменены mock URL вроде `http://mock-mis.local`; настоящие продовые URL и токены не используются. ## Корневой `.env` Корневой `.env` подключается в `Makefile` и передается в Docker Compose через `--env-file`. В нем должны быть значения для: - `ROOT_DIR` - абсолютный путь проекта на сервере для cron-скриптов; - `PG_DB`, `PG_USER`, `PG_PASS` - параметры PostgreSQL; - `REDIS_PASSWORD` - пароль Redis; - `GF_SECURITY_ADMIN_USER`, `GF_SECURITY_ADMIN_PASSWORD` - учетные данные Grafana. Не храните реальные значения в документации. Для новых разработчиков лучше завести `.env.example` без секретов. ## Переменные приложений Внутри `apps/backend` и `apps/cabinet` есть собственные `.env`, `.env.dev`, `.env.test`. Они управляют Symfony-приложениями: подключениями к БД, внешними API, mailer, Redis, JWT и режимом окружения. Backend использует несколько Doctrine connections: - `default` - основная PostgreSQL-база; - `mysql` - Bitrix MySQL; - `cabinet` - PostgreSQL-база старого кабинета. Cabinet использует: - `default` - PostgreSQL; - `bitrix` - Bitrix MySQL. ## Режимы Compose `COMPOSE_PROJECT_ENV` влияет на монтирование nginx/PHP-конфигов: - `dev` - берутся файлы из `infrastructure/nginx/dev` и `php-ini-dev.ini`; - `prod` - берутся файлы из `infrastructure/nginx/prod` и `php-ini-prod.ini`. `COMPOSE_NODE_ENV` выставляется в `Makefile`, но в `docker-compose.dev.yml` сейчас явно задан `NODE_ENV=development`. ## Сертификаты nginx слушает `80` и `443`; HTTPS-конфиги используют файлы из `infrastructure/nginx/certs`. Для разработки есть цель: ```bash make copy-certs ``` Она копирует сертификаты с удаленного хоста, поэтому требует доступ к соответствующему SSH alias.