Files
dc-observatio/deploy/local-bundle/README-local.md
T
Дмитрий Соловьев d48ddd2657 Init
2026-05-25 14:23:52 +03:00

193 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PCP local Docker bundle
Локальный bundle предназначен для запуска PCP на машине с Docker без GitLab Config Repo, Kubernetes и Helm.
## Состав
- `docker-compose.yml` - локальная схема запуска.
- `.env.example` - пример параметров запуска.
- `.env` - создаётся сборочным скриптом в итоговом архиве.
- `config-repo/` - локальный Spring Cloud Config repository.
- `images/` - Docker images, сохранённые через `docker save`.
- `scripts/import-images.sh` - импорт Docker images и запуск базовых сервисов.
- `scripts/init-db.sh` - создание баз данных в одном Postgres контейнере.
- `scripts/start.sh` - запуск инфраструктуры, config-server и приложений.
- `scripts/stop.sh` - остановка compose stack.
- `scripts/status.sh` - статус контейнеров.
## Сборка архива
Из корня репозитория:
```bash
./deploy/local-bundle/build-local-bundle.sh
```
Можно задать версию:
```bash
LOCAL_BUNDLE_VERSION=1.0.0-local ./deploy/local-bundle/build-local-bundle.sh
```
Результат будет создан в:
```bash
deploy/local-bundle/build/pcp-local-bundle-<version>.tar.gz
```
Скрипт сборки:
- собирает `bootJar` для разворачиваемых сервисов;
- собирает Docker images сервисов;
- сохраняет PCP service images в один `images/pcp-services.tar`;
- по умолчанию не сохраняет публичные infra images, чтобы не раздувать архив;
- копирует `docker-compose.yml`, `config-repo`, scripts и документацию;
- формирует итоговый `tar.gz`.
Публичные images `postgis/postgis` и `apache/kafka` будут скачаны на целевой машине командой `docker compose up`, если их нет локально.
Если нужен полностью offline bundle, включите сохранение infra images:
```bash
INCLUDE_INFRA_IMAGES=true ./deploy/local-bundle/build-local-bundle.sh
```
По умолчанию сборка `bootJar` выполняется последовательно, чтобы не упираться в heap Kotlin compiler daemon на локальной машине. Параметры можно переопределить:
```bash
GRADLE_MAX_WORKERS=1 \
GRADLE_JVMARGS="-Xmx2g -Dfile.encoding=UTF-8" \
KOTLIN_DAEMON_JVMARGS="-Xmx3g -XX:MaxMetaspaceSize=768m" \
./deploy/local-bundle/build-local-bundle.sh
```
## Запуск на локальной машине
Распаковать архив:
```bash
tar -xzf pcp-local-bundle-<version>.tar.gz
cd pcp-local-bundle-<version>
```
Проверить `.env` и при необходимости изменить порты.
Импортировать images:
```bash
./scripts/import-images.sh
```
Создать базы данных:
```bash
./scripts/init-db.sh
```
Запустить приложение:
```bash
./scripts/start.sh
```
`start.sh` также запускает `init-db.sh`, если не задано `SKIP_DB_INIT=true`.
## Остановка и статус
```bash
./scripts/status.sh
./scripts/stop.sh
```
Чтобы удалить volumes с данными Postgres/Kafka:
```bash
./scripts/stop.sh -v
```
## Открытые порты
- Config Server: `http://localhost:38888`
- Spring Boot Admin: `http://localhost:7000`
- TLE Monitoring: `http://localhost:7001`
- Complex Mission: `http://localhost:7002`
- Ballistics: `http://localhost:7003`
- Request Service: `http://localhost:7005`
- Slots Service: `http://localhost:7006`
- UI: `http://localhost:7008`
- Stations: `http://localhost:7009`
- Mission Planning: `http://localhost:7010`
- TGU: `http://localhost:7011`
- Coverage Scheme: `http://localhost:7012`
- Satellite Catalog: `http://localhost:7013`
- Dynamic Plan: `http://localhost:7014`
- Postgres: `localhost:5432`
- Kafka external listener: `localhost:29092`
## Проверка готовности
Config Server:
```bash
curl http://localhost:38888/actuator/health
curl http://localhost:38888/pcp-ui-service/local,docker-local
```
UI:
```bash
curl http://localhost:7008/actuator/health
```
Статус контейнеров:
```bash
./scripts/status.sh
```
## Config Server
В локальном сценарии `spring-cloud-config-server` запускается с:
```text
SPRING_PROFILES_ACTIVE=local
CONFIG_NATIVE_SEARCH_LOCATIONS=file:/config-repo
```
`CONFIG_GIT_URI`, GitLab token и `git clone` не используются.
Сервисы запускаются с профилями:
```text
SPRING_PROFILES_ACTIVE=local,docker-local
SPRING_CLOUD_CONFIG_PROFILE=local,docker-local
SPRING_CLOUD_CONFIG_LABEL=
```
Профиль `local` сохраняет существующие service-specific настройки, а `docker-local` переопределяет IP-адреса на Docker Compose DNS names:
- `postgres`
- `kafka`
- `pcp-ballistics-service`
- `slots-service`
- остальные service names из `docker-compose.yml`
## Базы данных
`scripts/init-db.sh` создаёт только пустые базы данных:
- `pcp_ballistics`
- `pcp_requests`
- `pcp_missions`
- `pcp_slots`
- `pcp_complex_plan`
- `pcp_satellite_catalog`
- `pcp_stations`
- `pcp_tgu`
- `pcp_tle`
- `pcp_satellites`
Таблицы, схемы и seed data вручную не создаются. Схемы создаются существующими Flyway migrations внутри сервисов при старте приложений.
`pcp_satellites` добавлена дополнительно, потому что текущий `config-repo/pcp-complex-mission-service.yaml` использует эту БД для `pcp-complex-mission-service`.