3.8 KiB
💻 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. Подготовка сети
Перед первым запуском необходимо создать общую сеть, если она еще не создана:
docker network create jambotron-net
- Запуск инфраструктуры Запуск всех баз данных и системных сервисов:
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.