Описание docker-контейнеров платформы Graviton

Данный документ содержит описание компонент платформы Graviton. Архитектурно все компоненты находятся в одной внутренней сети, могут обращаться друг к другу по доменным именам(именам контейнеров) и видят все порты друг друга.

В качестве примера будут предоставлены docker-compose файлы с настройкой non-prod и prod окружений.

application

Основной Backend компонент low-code платформы.

Для non-prod окружений так же необходимо примонтировать persistent папку в корневую папку проекта(указана в переменной PROJECT_ROOT) для хранения кода приложения. Папка должна быть единой для application и generator контейнеров и примонтирована с RW правами. Пример в синтаксисе docker-compose:

volumes:

- ./storage/app:/application

Список переменных окружения необходимых для запуска контейнера:

Production версия приложения является stateless и может масштабироваться как  вертикально, так и горизонтально. Non-prod приложение может масштабироваться только вертикально путем выделения большего количество памяти в MAVEN_OPTS .

generator

Генератор исходного кода для разрабатываемого приложения. Должен быть запущен только на non-prod окружениях.

Так же необходимо примонтировать persistent папку в корневую папку проекта для хранения кода приложения. Папка должна быть единой для application и generator контейнеров и примонтирована с RW правами. Пример в синтаксисе docker-compose:

volumes:

- ./storage/app:/application

Список переменных окружения необходимых для запуска контейнера:

Приложение генератора может масштабироваться только вертикально.

security-agent

Контейнер служит для коммуникации между application и Keycloak как сервера OpenID Connect.

Список переменных окружения необходимых для запуска контейнера:

Приложение агента stateless и может масштабироваться как вертикально, так и горизонтально.

frontend-app

Контейнер содержащий в себе nginx и версию бизнес приложения.

Для запуска требуется примонтировать директорию с конфигурацией в /etc/nginx/conf.d/. Пример в синтаксисе docker-compose:

volumes:

- ./conf/app:/etc/nginx/conf.d/

Конфигурация будет передана отдельным файлом(nginx-app.conf), в исходной конфигурации nginx приложение работает на 80 порту(может быть изменен в файле конфигурации) и данный порт должен быть доступен пользователям.

frontend-platform

Контейнер содержащий в себе nginx и версию gриложения платформы. Должен быть запущен только на non-prod окружениях.

Контейнер не имеет внешних портов, доступ к ресурсам nginx осуществляется через проксирование frontend-app контейнера.

Для запуска требуется примонтировать директорию с конфигурацией в /etc/nginx/conf.d/. Пример в синтаксисе docker-compose:

volumes:

- ./conf/platform:/etc/nginx/conf.d/

Конфигурация будет передана отдельным файлом(nginx-platform.conf).