Skip to main content

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 контейнера в котором выполняются команды.