Для облегчения развертывания системы QoW, предусмотрен вариант развертывания при помощи Docker. Для работы сервера на хосте необходим только установленный Docker и встроенный в него плагин Docker Compose, а также открытые и незанятые порты 80 и 8883 в системе (при использовании HTTPS также необходим открытый порт 443).

Система QoW представлена в виде файла конфигурации для инструмента Docker Compose, в котором заданы конфигурации для отдельных контейнеров с Nginx, MQTT сервером, MongoDB сервером и QoW сервером. При развертывании инструмент Docker Compose автоматически создает и настраивает отдельные контейнеры, а также связывает их в общую сеть для их коммуникации, открывая наружу только минимум необходимых портов для работы системы. Модульность системы Compose позволяет гибко настраивать конфигурацию сервера и отдельных его компонентов, что позволяет запускать его как в базовом варианте с минимумом настроек, так и создавать более сложные конфигурации.

Ниже приведена инструкция для развертывания системы QoW в системе Linux, но возможно развертывание и под Windows при условии, что у вас не заняты необходимые для работы порты.

Для развертывания необходимо выполнить следующие действия:

  1. Установите Docker и Docker Compose, если они еще не установлены в системе. Информацию по установке можно найти в официальной документации к Docker Engine (https://docs.docker.com/engine/install/).
  2. Создайте директорию, в которой будут храниться конфигурационные файлы и данные из контейнеров:
    mkdir -p qow-server-docker/ 
    cd qow-server-docker
  3. Скачайте конфигурационный файл docker-compose.yml по данной ссылке TODO и положите его в корень директории qow-server-docker.
  4. Откройте файл docker-compose.yml в текстовом редакторе, найдите переменную NETAMS_LICENSE_KEY и замените ее значение LICENSE_KEY на ваш лицензионный ключ.
  5. Выполните логин в наш Docker Registry для скачивания образа сервера QoW, логин и пароль для входа запросите у службы технической поддержки:
    docker login packages.wnam.ru
  6. После успешной авторизации выполните скачивание всех необходимых для работы образов контейнеров:
    docker compose pull
  7. После скачивания всех образов запустите контейнеры:
    docker compose up -d
  8. После запуска контейнеров перейдите в браузере по адресу http://localhost или по IP адресу хоста, на котором вы запустили контейнеры.
  9. Просмотреть логи можно при помощи команды docker compose logs -f -n 0, либо в папке ./qow/logs/.
  10. Обновить образ 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 контейнере почти не отличается от обычной системы, развернутой из образа или вручную, и большинство инструкций для них применимо также и к данному варианту развертывания.

  • No labels