Для облегчения развертывания системы QoW, предусмотрен вариант развертывания при помощи Docker. Для работы сервера на хосте необходим только установленный Docker и встроенный в него плагин Docker Compose, а также открытые и незанятые порты 80 и 8883 в системе (при использовании HTTPS также необходим открытый порт 443).
Система QoW представлена в виде файла конфигурации для инструмента Docker Compose, в котором заданы конфигурации для отдельных контейнеров с Nginx, MQTT сервером, MongoDB сервером и QoW сервером. При развертывании инструмент Docker Compose автоматически создает и настраивает отдельные контейнеры, а также связывает их в общую сеть для их коммуникации, открывая наружу только минимум необходимых портов для работы системы. Модульность системы Compose позволяет гибко настраивать конфигурацию сервера и отдельных его компонентов, что позволяет запускать его как в базовом варианте с минимумом настроек, так и создавать более сложные конфигурации.
Ниже приведена инструкция для развертывания системы QoW в системе Linux, но возможно развертывание и под Windows при условии, что у вас не заняты необходимые для работы порты.
Для развертывания необходимо выполнить следующие действия:
mkdir -p qow-server-docker/ cd qow-server-docker mkdir -p mosquitto/certs/ nginx/ |
docker-compose.yml по данной ссылке TODO и положите его в корень директории qow-server-docker../mosqutto/certs/. Имена файлов обязательно должны быть такими же, иначе измените их имена в файле docker-compose.yml.docker login packages.wnam.ru |
docker compose pull |
docker compose up -d |
docker compose logs -f -n 0, либо в папке ./qow/logs/.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 контейнере почти не отличается от обычной системы, развернутой из образа или вручную, и большинство инструкций для них применимо также и к данному варианту развертывания.