Контейнеры
Текст может содержать неточности, устаревшие данные или технические ошибки. Пожалуйста, проверяйте критически важную информацию перед использованием.
Architeezy работает как набор контейнеров, описанных в одном файле
docker-compose.yml. Сервисы обращаются друг к другу по имени контейнера в сети
compose.
Все публикуемые порты привязаны к 127.0.0.1, поэтому снаружи хоста ничего не
видно, пока перед приложением не поставлен обратный прокси. Каждый порт задан
переменной в файле .env, так что перенести сервис на свободный порт можно, не
трогая compose-файл.
Сервисы
frontend
Контейнер architeezy-frontend. Nginx: отдаёт пользовательский интерфейс —
статические файлы HTML, JavaScript и CSS — и проксирует запросы приложения
API-шлюзу: /api/, /subscriptions, /mcp, /login, /logout, /account,
/authenticate, /oauth2/ и /.well-known/.
Единственный сервис, к которому обращаются пользователи. Внутри контейнера
слушает порт 8080, наружу публикуется на FRONTEND_PORT (по умолчанию 8080).
Проверка состояния — /health.
api-gateway
Контейнер architeezy-api-gateway. Отвечает за аутентификацию: проводит
пользователя через поток authorization code OAuth 2.0 в Keycloak, хранит его
сессию в Redis и передаёт /api/**, /subscriptions и /mcp/** бэкенду. Он же
отправляет почту через SMTP-сервер, если тот настроен.
Внутри контейнера слушает порт 8081, на хост не публикуется. Проверка состояния
— /actuator/health.
backend
Контейнер architeezy-backend. Ядро приложения: проекты, модели, представления,
проверка моделей, выражения и ИИ-ассистент. Все данные хранит в базе данных
приложения, а входящие токены проверяет по набору ключей Keycloak.
Внутри контейнера слушает порт 8082, на хост не публикуется. Проверка состояния
— /actuator/health.
db
Контейнер architeezy-db. PostgreSQL 18 с базой данных architeezy — проекты,
модели, представления и загруженные изображения. Данные хранятся в томе
architeezy-db-data. Публикуется на DATABASE_PORT (по умолчанию 5441) для
локального администрирования.
redis
Контейнер architeezy-redis. Хранит пользовательские сессии, поэтому после
перезапуска API-шлюза пользователи остаются в системе. Пишет данные в режиме
append-only в том architeezy-redis-data и требует пароль из REDIS_PASSWORD.
Публикуется на REDIS_PORT (по умолчанию 6382).
keycloak
Контейнер architeezy-keycloak. Система управления учётными записями и
доступом. Образ содержит realm architeezy и импортирует его при первом
запуске. Публикуется на KEYCLOAK_PORT (по умолчанию 8181); пользователи
обращаются к нему при входе, поэтому ему нужен собственный публичный адрес.
keycloak-db
Контейнер architeezy-keycloak-db. PostgreSQL 18 с базой данных keycloak —
учётные записи пользователей, учётные данные и конфигурация realm. Данные
хранятся в томе architeezy-keycloak-db-data. Публикуется на
KEYCLOAK_DATABASE_PORT (по умолчанию 5444).
Порядок запуска
Compose поднимает сервисы по цепочке зависимостей и ждёт, пока предыдущий не пройдёт проверку состояния:
- Первыми поднимаются
db,keycloak-dbиredis. keycloakждётkeycloak-db.backendждётdbиkeycloak.api-gatewayждётredis,backendиkeycloak.frontendждётapi-gateway.
У backend, api-gateway и keycloak проверка состояния включается через 60
секунд после старта, поэтому при первом docker compose up на холодной машине
интерфейс отвечает через пару минут.