Развертывание и настройка CVAT
Предварительные замечания.
Дальнейшее изложение основано на сценарии предложеном в следующем видеоролике. А точнее, в инструкции на которую отсылают из видеоролика: https://openvinotoolkit.github.io/cvat/docs/manual/advanced/serverless-tutorial/
Предполагается, что мы имеем машину под управлением Debian/Ubuntu (тестировалось на Debian10) с установленой инфраструктурой Docker и работающей docker-compose.
Установка Docker и docker-compose проводилась с помощью ansible playbook'a. Это описано в следующей инструкции.
Машина имеет сетевой интерфейс в локальную сеть и/или в Интернет, на котором будем смотреть на результаты установки.
Сценарий установки.
1. Заходим на машину для установки пользователем (например) deploy, у которого есть права суперпользователя по sudo.
2. Клонируем в домашний каталог версию CVAT с github'а:
git clone https://github.com/opencv/cvat
cd cvat
3. Запускам docker-compose с опцией build
docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f components/serverless/docker-compose.serverless.yml up -d --build
это заняло достаточно много времени! В ходе установки была поставлена большая группа deb-пакетов и выполнялась компиляция и сборка компонент с помощью gcc (!!!). В ходе этого процесса проскакивали красные строчки, но будем надеятся, что это были предкпреждения. Хотя, надо бы заглянуть в log-файл.
4. По окончании смотрим на список контейнеров:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f components/serverless/docker-compose.serverless.yml ps
должны увидеть картинку похожую на эту:
Name Command State Ports
-------------------------------------------------------------------------------------------------------------
cvat /usr/bin/supervisord Up 8080/tcp
cvat_db docker-entrypoint.sh postgres Up 5432/tcp
cvat_proxy /docker-entrypoint.sh /bin ... Up 0.0.0.0:8080->80/tcp,:::8080->80/tcp
cvat_redis docker-entrypoint.sh redis ... Up 6379/tcp
cvat_ui /docker-entrypoint.sh ngin ... Up 80/tcp
nuclio /docker-entrypoint.sh sh - ... Up (healthy) 80/tcp, 0.0.0.0:8070->8070/tcp,:::8070->8070/tcp
или просто
docker ps
видим, что cvat "exposed" на порт 8080 хоста, а nuclio на порт 8070.
5. Чтобы увидеть в браузере на этих портах интерфейсы cvat и nuclio необходиимо на хосте
сэкспортировать env-переменную:
export CVAT_HOST=<YOUR_HOSTNAME_OR_IP>
Это описано в F.A.Q. (How to change default CVAT hostname or port)
Смотрим какой ip у нас на интерфейсе упомянутом в "Предварительных замечаниях"
sudo ifconfig
потом прописывам строчку с export в .bashrc
6. Перезапускаем контейнеры:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f components/serverless/docker-compose.serverless.yml stop
docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f components/serverless/docker-compose.serverless.yml up -d
7. Смотрим браузером на порты 8080 и 8070.
8. Теперь нам нужен пароль суперпользователя для cvat. Делаем:
docker exec -it cvat bash -ic 'python3 ~/manage.py createsuperuser'
можно оставить имя django и поставить пароль и почту.
9. Проверяем вход суперпользователем в cvat.
10. Ставим nuctl как в инструкции:
wget https://github.com/nuclio/nuclio/releases/download/1.9.0/nuctl-1.9.0-linux-amd64
sudo chmod +x nuctl-1.9.0-linux-amd64
sudo ln -sf $(pwd)/nuctl-1.9.0-linux-amd64 /usr/local/bin/nuctl
новые версии ищем тут https://github.com/nuclio/nuclio/releases
11. Проверяем
nuctl get functions