# Local jar runner

Скрипт запускает backend-сервисы как Spring Boot jar'ы на локальной машине.
Spring Cloud Config Server стартует первым и читает конфигурацию из локального
`config-repo`.

## Запуск

Из корня репозитория:

```bash
./deploy/local-jar/run-services.sh start
```

Что делает `start`:

- собирает `bootJar` для `spring-cloud-config-server` и всех Spring Boot сервисов;
- поднимает локальные `postgres` и `kafka` через `deploy/local-bundle/docker-compose.yml`;
- создаёт сервисные базы данных, если их ещё нет;
- запускает `spring-cloud-config-server` на `http://localhost:38888`;
- проверяет lookup конфигурации из `config-repo`;
- запускает остальные jar'ы в заданной последовательности.

Runtime-файлы создаются в `build/local-jar-runtime`:

- `pids/` - PID процессов;
- `logs/` - stdout/stderr каждого сервиса.

## Команды

```bash
./deploy/local-jar/run-services.sh status
./deploy/local-jar/run-services.sh logs pcp-request-service
./deploy/local-jar/run-services.sh stop
./deploy/local-jar/run-services.sh restart
```

Только сборка:

```bash
./deploy/local-jar/run-services.sh build
```

Только инфраструктура:

```bash
./deploy/local-jar/run-services.sh infra-up
./deploy/local-jar/run-services.sh infra-down
```

## Настройки

По умолчанию config-server использует:

```text
SPRING_PROFILES_ACTIVE=local
CONFIG_NATIVE_SEARCH_LOCATIONS=file:<repo>/config-repo
SERVER_PORT=38888
```

Сервисы используют:

```text
SPRING_PROFILES_ACTIVE=local
SPRING_CLOUD_CONFIG_PROFILE=local
SPRING_CLOUD_CONFIG_LABEL=
CONFIG_SERVER_URI=http://localhost:38888
```

Полезные override'ы:

```bash
START_INFRA=false ./deploy/local-jar/run-services.sh start
INIT_DB=false ./deploy/local-jar/run-services.sh start
WAIT_FOR_APPS=false ./deploy/local-jar/run-services.sh start
JAVA_OPTS="-Xmx1g" ./deploy/local-jar/run-services.sh start
CONFIG_REPO_DIR=/path/to/config-repo ./deploy/local-jar/run-services.sh start
LOCAL_SERVICE_PROFILES=local,foo ./deploy/local-jar/run-services.sh start
```
