# 💻 Local Development Infrastructure: Jambotron PaaS Этот файл описывает конфигурацию локальной среды разработки, которая зеркально отражает серверную инфраструктуру в Хельсинки. Локальный кластер настроен для обеспечения бесшовного процесса созидания и мониторинга контейнеров. ## 🏗️ Архитектура системы Локальная среда построена на базе Docker и управляется через единую сеть для обеспечения связи между системными базами и динамическими проектами. * **Runtime**: Docker Engine / Docker Desktop. * **Network**: `jambotron-net` (Тип: bridge, внешняя). * **Оркестрация**: Docker Compose. * **JDK**: Version 21 (LTS). * **Build Tool**: Gradle. ## 📦 Реестр локальных сервисов | Сервис | Образ | URL / Порт | Назначение | | :--- | :--- | :--- | :--- | | **caddy-dev** | `lucaslorentz/caddy-docker-proxy` | `*.localhost` | Обратный прокси с авто-обнаружением через Docker Socket. | | **jambo-postgres** | `postgres:15-alpine` | `localhost:5432` | Системная БД (Пользователи, настройки, биллинг). | | **jambotron-mongo** | `mongo:6.0` | `localhost:27017` | Хранилище метаданных проектов и контейнеров (SaaS 2.0). | | **jambo-pgadmin** | `dpage/pgadmin4` | `pgadmin.localhost` | Веб-интерфейс для управления PostgreSQL. | | **portainer-dev** | `portainer/portainer-ce` | `localhost:9443` | Визуальный мониторинг и управление Docker-ресурсами. | ## 🛠️ Стек разработки (Dev Mode) * **Backend**: Spring Boot 3.5.0 (профиль `dev`). * **Frontend**: Angular 17+ (интегрирован в Gradle-таски). * **БД Миграции**: Flyway. * **API управления**: Docker Java Client (через `/var/run/docker.sock`). ## 🚀 Быстрый старт ### 1. Подготовка сети Перед первым запуском необходимо создать общую сеть, если она еще не создана: ```bash docker network create jambotron-net ``` 2. Запуск инфраструктуры Запуск всех баз данных и системных сервисов: Bash docker-compose -f docker-compose.dev.yml up -d 3. Запуск приложения (Spring + Angular) Используй кастомный Gradle-таск для запуска приложения с профилем разработчика: Bash ./gradlew bootRun_Dev Команда автоматически соберет фронтенд, скопирует статику в src/main/resources/static и запустит сервер. 🔗 Особенности созидания проектов Для реализации динамического деплоя внутри PaaS, приложение использует проброс Docker Socket. Docker Labels: При создании нового контейнера через API, необходимо вешать лейблы caddy и caddy.reverse_proxy, чтобы локальный Caddy автоматически создал маршрут на project-name.localhost. Volumes: Данные PostgreSQL и MongoDB сохраняются в именованных томах jambo_db_dev_data и mongo_dev_data соответственно. Lombok: Для корректной сборки на JDK 21 используется версия 1.18.34.