Перейти к основному содержимому

Контейнеры

Этот документ был подготовлен при помощи ИИ

Текст может содержать неточности, устаревшие данные или технические ошибки. Пожалуйста, проверяйте критически важную информацию перед использованием.

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 поднимает сервисы по цепочке зависимостей и ждёт, пока предыдущий не пройдёт проверку состояния:

  1. Первыми поднимаются db, keycloak-db и redis.
  2. keycloak ждёт keycloak-db.
  3. backend ждёт db и keycloak.
  4. api-gateway ждёт redis, backend и keycloak.
  5. frontend ждёт api-gateway.

У backend, api-gateway и keycloak проверка состояния включается через 60 секунд после старта, поэтому при первом docker compose up на холодной машине интерфейс отвечает через пару минут.