# Быстрый старт

## Требования

- 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
```
