# Быстрый старт ## Требования - Docker и Docker Compose v2. - Доступ к приватным исходникам всех приложений, если нужны `frontend`, `adminPanel`, `sovamed` или `kiosk`. - Свободные порты `80`, `443`, `5432`, `3000`, `3001`, `8080`, `9090` в зависимости от запускаемого набора сервисов. - Локальный `.env` в корне репозитория. ## Запуск dev-окружения Для безопасной локальной разработки используйте отдельный local-контур. Он не читает корневой `.env`, не использует продовые домены и поднимает отдельные контейнеры: ```bash make local-up ``` Локальные адреса: - backend: `http://localhost:8081`; - cabinet: `http://localhost:8082`; - PostgreSQL: `localhost:15432`; - Bitrix MySQL mock: `localhost:13306`; - Redis: `localhost:16379`. Остановка: ```bash make local-down ``` Остановка с удалением локальных volumes: ```bash make local-clean ``` Повторное наполнение локальных БД тестовыми данными: ```bash make local-seed ``` Сборка ассетов cabinet. Нужна, если `http://localhost:8082/login` отдает `500` с ошибкой про `public/build/entrypoints.json`: ```bash make local-assets ``` Проверка, что локальный контур работает: ```bash make local-smoke ``` Исторические команды ниже используют общий корневой `.env`. Не запускайте их для локальной разработки, если есть риск обращения к внешним окружениям. Из корня репозитория: ```bash make dev ``` Команда собирает и запускает: - сети из `environments/docker-compose.networks.yml`; - PostgreSQL и Redis из `environments/docker-compose.dbs.yml`; - nginx, PHP-FPM и Next.js из `environments/docker-compose.apps.yml`; - Node.js helper-контейнер из `environments/docker-compose.dev.yml`. Фактически `make dev` вызывает `docker compose` с `COMPOSE_PROJECT_ENV=dev` и `COMPOSE_NODE_ENV=development`. ## Запуск полного набора ```bash make up ``` Этот сценарий использует production-переменные окружения и дополнительно подключает мониторинг из `environments/docker-compose.monitoring.yml`. ## Остановка ```bash make down ``` Полная остановка с удалением volumes: ```bash make clean ``` Полная очистка Docker на машине: ```bash make prune ``` ## Команды внутри контейнеров Установка PHP-зависимостей backend: ```bash docker exec -it php84 composer install ``` Установка PHP-зависимостей cabinet: ```bash docker exec -it php82 composer install ``` Установка и сборка frontend-ассетов cabinet: ```bash docker exec -it php82 yarn install docker exec -it php82 yarn dev ``` Миграции backend: ```bash docker exec -it php84 php bin/console doctrine:migrations:migrate ``` Миграции cabinet: ```bash docker exec -it php82 php bin/console doctrine:migrations:migrate ``` ## Локальные домены nginx-конфиги ожидают домены вроде: - `api.sovamed.ru` -> `apps/backend/public`; - `cabinet.sovamed.ru` -> `apps/cabinet/public`; - `dev.sovamed.ru`, `dev.wmtmed.ru`, `adm.sovamed.ru` и другие домены для отсутствующих сейчас приложений. Для локальной разработки обычно нужно добавить домены в `/etc/hosts` на `127.0.0.1` и иметь dev-сертификаты в `infrastructure/nginx/certs`. ## Проверка состояния ```bash docker compose ps docker logs nginx --tail=100 docker logs php84 --tail=100 docker logs php82 --tail=100 ```