Init
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user