Для облегчения развертывания системы QoW, предусмотрен вариант развертывания при помощи Docker. Для работы сервера на хосте необходим только установленный Docker и встроенный в него плагин Docker Compose, а также открытые и незанятые порты 80 и 8883 в системе (при использовании HTTPS также необходим открытый порт 443).
Система QoW представлена в виде файла конфигурации для инструмента Docker Compose, в котором заданы конфигурации для отдельных контейнеров с Nginx, MQTT сервером, MongoDB сервером и QoW сервером. При развертывании инструмент Docker Compose автоматически создает и настраивает отдельные контейнеры, а также связывает их в общую сеть для их коммуникации, открывая наружу только минимум необходимых портов для работы системы. Модульность системы Compose позволяет гибко настраивать конфигурацию сервера и отдельных его компонентов, что позволяет запускать его как в базовом варианте с минимумом настроек, так и создавать более сложные конфигурации.
Ниже приведена инструкция для развертывания системы QoW в системе Linux, но возможно развертывание и под Windows при условии, что у вас не заняты необходимые для работы порты.
Для развертывания необходимо выполнить следующие действия:
- Установите Docker и Docker Compose, если они еще не установлены в системе. Информацию по установке можно найти в официальной документации к Docker Engine (https://docs.docker.com/engine/install/).
- Создайте директорию, в которой будут храниться конфигурационные файлы и данные из контейнеров:
mkdir -p qow-server-docker/ cd qow-server-docker
- Скачайте конфигурационный файл
docker-compose.ymlпо данной ссылке TODO и положите его в корень директорииqow-server-docker. - Откройте файл docker-compose.yml в текстовом редакторе, найдите переменную NETAMS_LICENSE_KEY и замените ее значение LICENSE_KEY на ваш лицензионный ключ.
- Выполните логин в наш Docker Registry для скачивания образа сервера QoW, логин и пароль для входа запросите у службы технической поддержки:
docker login packages.wnam.ru
- После успешной авторизации выполните скачивание всех необходимых для работы образов контейнеров:
docker compose pull
- После скачивания всех образов запустите контейнеры:
docker compose up -d
- После запуска контейнеров перейдите в браузере по адресу http://localhost или по IP адресу хоста, на котором вы запустили контейнеры.
- Просмотреть логи можно при помощи команды
docker compose logs -f -n 0, либо в папке ./qow/logs/. - Обновить образ QoW можно следующими командами:
docker compose down docker compose pull docker compose up -d
При необходимости использования своих внешних файлов конфигурации в контейнерах (например, для nginx и настройки HTTPS, или для QoW и использования кастомных настроек в application.properties), а также для более простого обновления конфигурации docker-compose, возможно создание файла переопределения docker-compose.override.yml, который должен находиться рядом с основным файлом docker-compose.yml, ниже представлен файл для примера, можно взять его и оставить только необходимые части:
# Docker Compose override file for custom configuration files
# Docker automatically merges this file with docker-compose.yml if present.
# To use custom configs, ensure the host files exist and run: docker compose up -d
services:
mosquitto:
# replace embedded default config with external file
configs: !reset []
volumes:
- ./mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro
nginx:
# replace embedded default config with external file
configs: !reset []
volumes:
- ./nginx/qow.conf:/etc/nginx/conf.d/default.conf:ro
qow-app:
# replace embedded default config with external file
volumes:
- ./qow/application.properties:/home/qow/application.properties:ro
# add license key here for easier docker-compose.yml update
environment:
- NETAMS_LICENSE_KEY=LICENSE_KEY
Данный файл будет автоматически объединен с основным файлом docker-compose при запуске, и параметры, заданные в нем, переопределят дефолтные параметры. Учтите, что при задании внешних файлов обязательно их наличие в системе, иначе контейнеры просто не запустятся.
В остальном система QoW, запущенная в Docker контейнере почти не отличается от обычной системы, развернутой из образа или вручную, и большинство инструкций для них применимо также и к данному варианту развертывания.