Container Service Endpoints
Как запустить сервис
В корне проекта есть папка configs. В папке есть docker-compose. Необходимо запустить сервисы: container, aerospike.
Как протестировать сервис
Открываем Postman и рабочее пространство Lious. Все методы находятся в папке Container Manager Service.
Как изменить параметры по умолчанию
Конфиги находятся здесь:
-
configs/databases/aerospike/aerospike.conf
-
configs/services/container/configuration.yml
Параметры сервиса:
|
Параметр |
Описание |
Значение по умолчанию |
|
dockerImage |
Образ на основе которого создается Docker контейнер |
"ubuntu:latest" |
|
dockerLabels |
Метаданные а точнее метки вашего контейнера |
{ "creator": "service" } |
|
aerospikeHostname |
Название хоста Aerospike |
"aerospike" |
|
aerospikeInitializationTime |
Время задержки перед подключением к базе |
3 |
|
aerospikeNamespace |
Название базы данных |
"database" |
|
aerospikePort |
Порт на котором работает база |
3000 |
|
containerPoolSize |
Количество заранее готовых контейнеров (подробнее ниже) |
3 |
|
ensurePoolSizeTime |
Каждые <time> происходит проверка на наличие готовых контейнеров (подробнее ниже) |
60 |
|
fiberAddress |
Порт на котором работает сервис |
":6689" |
|
testsPath |
Путь к тестам внутри контейнера Container Manager Service |
"/opt/container-tests" |
|
containerTestsPath |
Путь к тестам внутри контейнера пользователя |
"/opt/container-manager/tests" |
Подробное описание механизмов и параметров:
containerPoolSize - это количество контейнеров которые сервис будет создавать заранее чтобы избежать больших нагрузок. При запросе Prepare Container сервис будет брать готовые контейнеры из этого списка и просто запускать их. Если же в списке не окажется готовых контейнеров то он самостоятельно создаст контейнер и запустит его.
ensurePoolSizeTime - это время которое будет ждать сервис перед тем как проверить список готовых контейнеров. По истечении времени ожидания сервис проверит список готовых контейнеров и автоматически пополнит его новыми контейнерами если их количество не соответствует containerPoolSize. Если же их количество соответствует containerPoolSize то тогда ничего не случится и сервис продолжит ждать обновления дальше.
|
Done?
|
Method
|
HTTP method
|
Address
|
Description
|
||
|---|---|---|---|---|---|---|
|
1
|
Create Container |
POST |
/container/create |
Сначала проверяется наличие образа на диске. Если его нет то образ скачивается. Далее контейнер создается. |
||
|
2
|
Remove Container |
POST |
/container/remove |
Удаляет контейнер. Если контейнер в активном состоянии то необходимо его сначала остановить. Смотреть метод Dispose Container. |
||
|
3
|
Start Container |
POST |
/container/start |
Запускает контейнер. После запуска контейнер готов к использованию и можно вводить команды в терминале. |
||
|
4
|
Stop Container |
POST |
/container/stop |
Останавливает контейнер. Всем процессам посылается сигнал о завершении поэтому метод может выполняться примерно 10 с. |
||
|
5
|
Execute Command |
POST |
/container/execute_command |
Выполняет команды в терминале контейнера. Если в течение 20 с команда не завершит свое выполнение то метод вернет то что было написано за эти 20 с. Если раньше то вернет весь ответ полностью. |
||
|
6
|
Prepare Container |
POST |
/manager/prepare_container |
Метод для подготовки контейнера к работе. Создает контейнер и запускает его. После этого в нем можно выполнять команды в терминале. |
||
|
7
|
Dispose Container |
POST |
/manager/dispose_container |
Метод для завершения работы с контейнером. Останавливает все процессы внутри контейнера и после удаляет его. |
||
|
8
|
Execute Command In Container |
POST |
/manager/execute_command_in_container |
Выполняет команды в терминале. Отличие от метода Execute Command в том что вместо ID контейнера необходимо передавать имя пользователя. Далее сервис делает поиск в базе и находит ID контейнера в котором выполняются команды. |
||