5.9 KiB
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:
postgreskafkapcp-ballistics-serviceslots-service- остальные service names из
docker-compose.yml
Базы данных
scripts/init-db.sh создаёт только пустые базы данных:
pcp_ballisticspcp_requestspcp_missionspcp_slotspcp_complex_planpcp_satellite_catalogpcp_stationspcp_tgupcp_tlepcp_satellites
Таблицы, схемы и seed data вручную не создаются. Схемы создаются существующими Flyway migrations внутри сервисов при старте приложений.
pcp_satellites добавлена дополнительно, потому что текущий config-repo/pcp-complex-mission-service.yaml использует эту БД для pcp-complex-mission-service.