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

5.9 KiB
Raw Blame History

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 - статус контейнеров.

Сборка архива

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

./deploy/local-bundle/build-local-bundle.sh

Можно задать версию:

LOCAL_BUNDLE_VERSION=1.0.0-local ./deploy/local-bundle/build-local-bundle.sh

Результат будет создан в:

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:

INCLUDE_INFRA_IMAGES=true ./deploy/local-bundle/build-local-bundle.sh

По умолчанию сборка bootJar выполняется последовательно, чтобы не упираться в heap Kotlin compiler daemon на локальной машине. Параметры можно переопределить:

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

Запуск на локальной машине

Распаковать архив:

tar -xzf pcp-local-bundle-<version>.tar.gz
cd pcp-local-bundle-<version>

Проверить .env и при необходимости изменить порты.

Импортировать images:

./scripts/import-images.sh

Создать базы данных:

./scripts/init-db.sh

Запустить приложение:

./scripts/start.sh

start.sh также запускает init-db.sh, если не задано SKIP_DB_INIT=true.

Остановка и статус

./scripts/status.sh
./scripts/stop.sh

Чтобы удалить volumes с данными Postgres/Kafka:

./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:

curl http://localhost:38888/actuator/health
curl http://localhost:38888/pcp-ui-service/local,docker-local

UI:

curl http://localhost:7008/actuator/health

Статус контейнеров:

./scripts/status.sh

Config Server

В локальном сценарии spring-cloud-config-server запускается с:

SPRING_PROFILES_ACTIVE=local
CONFIG_NATIVE_SEARCH_LOCATIONS=file:/config-repo

CONFIG_GIT_URI, GitLab token и git clone не используются.

Сервисы запускаются с профилями:

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.