Установка платформы TESSA в среде управления контейнерами Docker¶
Вы можете установить типовую версию платформы на локальном компьютере для использования в целях тестирования или для продуктовой эксплуатации без развёртывания системы в виртуальной машине. Для этого используется среда управления контейнерами Docker
. В текущей инструкции рассматривается установка для ОС Windows
, внутри которой будут запущены контейнеры Docker
.
Note
Контейнеры Docker
для приложения TESSA работают в заранее настроенной среде с использованием окружения ОС Alpine Linux
. При этом система Docker
может быть запущена не только на хост-машине ОС Windows
, но и на macOS
, и на любом дистрибутиве Linux
, который поддерживается приложением Docker
.
Note
Поскольку контейнер определяет только окружение ОС Linux
, но не ядро операционной системы, и контейнер не является виртуальной машиной (а своего рода маппингом папок, областей памяти и системных вызовов), то при запуске Docker
, например, на хост-машине под ОС Debian
, контейнер также будет исполняться на ОС Debian
, несмотря на то, что окружением, которое определено в контейнере, является ОС Alpine Linux
. Данная инструкция не затрагивает установку Docker
на хост-машинах macOS
или Linux
, и создание контейнеров приложения TESSA на ОС Linux
, отличной от окружения Alpine Linux
.
Warning
На текущий момент зафиксированы проблемы с использованием Docker Desktop
на Windows 10
версии 20H1
(май 2020 г.), в которой в настройках Docker Desktop
(Settings
в контекстном меню на значке в системном трее) указан Use the WSL 2 based engine
. Если вы также наблюдаете ошибку при установке на этапе Checking connection to web service
при выполнении скрипта install.bat
, то отключите этот флаг, Docker
перезапустится, и запустите скрипт повторно.
Установка с использованием Docker Desktop на ОС Windows¶
Скачайте и установите Docker Desktop
(на сайте потребуется зарегистрироваться, регистрация бесплатна): https://www.docker.com/products/docker-desktop
После установки потребуется перезагрузиться. Согласитесь при запросе на включение Hyper V
при первом запуске.
Warning
После включения компонента Hyper V
виртуальные машины VirtualBox
и VMWare
перестанут функционировать. Вы можете отключить Hyper V
в настройках компонентов Windows
(и перезагрузиться), чтобы виртуальные машины снова работали. Потом для работы Docker
можно снова запустить Docker Desktop
, который предложит включить Hyper V
, чтобы работал он.
Установка с использованием сборки tessa¶
Откройте папку со сборкой TESSA, в ней в папке Docker
скопируйте подпапку tessa
на ваш локальный диск, из которого будет запускаться и настраиваться установленная версия системы. При этом дополнительных файлов в этой папке создано не будет, поскольку контейнеры создаются и хранятся в локальном реестре Docker
, который располагается в папках пользователя (обратитесь к инструкции Docker
на сайте https://docs.docker.com/).
Tip
Имя установленной системы зависит от имени папки, в которую распаковано содержимое. Например, папка tessa
создаёт и управляет системой с именем tessa
. Скопируйте содержимое этой папки в папку с другим именем, расположенную рядом, и запускайте скрипты из папок с разными именами, чтобы одновременно иметь несколько независимых установленных систем на компьютере.
Скопируйте ваш файл лицензии *.jlic
или *.tlic
в текущую папку с системой (папка tessa
).
Запустите скрипт install.bat
, нажмите любую клавишу для начала установки и дождитесь её завершения.
Tip
По умолчанию система скачивает и устанавливает последнюю сборку платформы TESSA, опубликованную в репозитории Docker Hub
. Вы можете перед установкой отредактировать файл docker-compose.yml
, указав конкретные версии образов syntellect/tessa:***
(свойство image
), добавив номер сборки и знак дефиса, например: syntellect/tessa:4.0.0-web
. Версии для образов web
, chronos
, jinni
, nginx
и tadmin
должны совпадать. По аналогии можно использовать теги syntellect/tessa:4.0-web
для последней опубликованной сборки 4.0.x
, syntellect/tessa:4-web
для последней опубликованной сборки 4.x.x
, и по аналогии для других версий системы и других образов.
Перед завершением скрипт выведет на экран порт такого вида:
0.0.0.0:32768
Адрес веб-сервиса на вашем компьютере будет следующим (укажите порт, который вывел скрипт): https://localhost:32768
Повторно вывести порт можно, запустив скрипт start.bat
.
Для использования web-клиента откройте эту ссылку в адресе веб-браузера. Введите логин admin
и пароль admin
для пользователя, созданного по умолчанию.
Для использования desktop-клиента установите Tessa Applications
через msi
-инсталлятор из сборки платформы в папке Setup
(подпапка ru-RU
для русскоязычной версии, в ней подпапка x64
для 64-битных ОС). В качестве адреса сервера укажите ссылку выше, в качестве кода сервера задайте docker
. Логин admin
, пароль admin
(их можно указать на вкладке Серверы
, чтобы не вводить каждый раз).
На этом установка системы завершена. Ниже приведена информация по управлению запущенными контейнерами и по дополнительным настройкам системы в контейнерах.
Управление запущенными контейнерами¶
Здесь приводится справочная информация по использованию скриптов в папке с приложением tessa
, в т.ч. по запуску, остановке, удалению контейнеров и других.
-
Для остановки без удаления данных (из базы данных и файловых хранилищ) вызовите скрипт
stop.bat
. -
Для повторного запуска вызовите
start.bat
, новый адрес порта будет отображён в консоли (или предыдущий адрес, если сервисы не останавливались). -
После перезагрузки контейнеры будут остановлены, для их запуска вызовите
start.bat
после того, как на значкеDocker
в трее будет всплывающая подсказкаDocker Desktop is running
. -
Для остановки и удаления данных из контейнеров вызовите
uninstall.bat
. -
Для повторной установки “чистой” системы вызовите
install.bat
. Предварительно вызыватьuninstall.bat
не нужно, данные предыдущей установки будут удалены, если присутствовали. -
Для полной очистки
Docker
и всех его кэшей: в меню на значкеDocker
в трее выберитеSettings
, перейдите на вкладкуReset
и выберитеReset to factory defaults
. Дождитесь завершения очистки и заново вызовитеinstall.bat
. -
Посредством скрипта
tadmin.bat
можно из командной строки выполнять действия с утилитойtadmin
, для которой укажите адрес подключения к сервисам https://nginx. Выполнение производится в контейнере утилиты, где доступны папкиConfiguration
иFixes
из той версии сборки, которая была установлена. Пример:tadmin ImportCards "Configuration/Cards/Settings/License (settings).jcard" -c -a:https://nginx -u:admin -p:admin
Создание образов Docker с использованием дистрибутива TESSA alpine-redist¶
Вы можете создать собственные образы Docker, содержащие сборку TESSA требуемой версии без использования образов, опубликованных в Docker Hub
.
Note
При работе с командами Docker
рекомендуется использовать в качестве терминала cmd
или PowerShell
. Далее при описании используется PowerShell
.
Создайте папку на локальном диске (например, С:\tessa
) и распакуйте в неё архив с дистрибутивом TESSA для Alpine Linux
. Он называется tessa-alpine-4.0-0.7z
, где 4.0
- версия релиза платформы, и 0
на конце - номер патча.
Note
Для вашего релиза и патча архив будет называться соответствующим образом
. Если у вас его нет, то запросите его получение у вендора.
Откройте папку с основной сборкой TESSA и перейдите в подпапку linux
. Из неё скопируйте подпапку jinni
в папку на локальном диске, которую создали ранее при распаковке архива, в подпапку platform
. Например, если архив был распакован в папку С:\tessa
, то итоговый путь будет следующим: C:\tessa\platform\jinni
.
Скопируйте с заменой файлов содержимое папки [путь до созданной папки]\docker\tessa-alpine
в корень папки, созданной ранее. Скопируйте в основную папку файлы docker-compose.yml
, Dockerfile
и папку authorized_keys
из папки [путь до основной сборки]\Docker\tessa
, а также лицензию формата .jlic
или .tlic
. Итоговый дистрибутив должен выглядеть так:
Сборка Chronos¶
Перейдите в папку platform
и скопируйте туда файл C:\tessa\docker\chronos\Dockerfile
.
Откройте конфигурационный файл app-db.json
, расположенный в папке chronos
. Обратите особое внимание на имя базы данных в параметре Host
. Значение должно совпадать со значением в docker-compose.yml
.
Также откройте конфигурационный файл app.json
, расположенный в папке chronos
. Обратите особое внимание на строку подключения к Redis
. Значение должно совпадать со значением в docker-compose.yml
.
Отредактируйте строку LicenseFile
, заменив путь на /var/lic/*.?lic
Чтобы запустить сборку образа, в терминале перейдите в папку platform
и выполните следующую команду:
docker build -t syntellect/tessa:chronos .
Сборка nginx¶
Перейдите в папку nginx
и скопируйте туда файл C:\tessa\docker\nginx\Dockerfile
.
Откройте файл default.conf
, расположенный там же. Убедитесь, что в начале этого файла указана строка:
server web:5000;
Если вместо web
указан localhost
, то необходимо заменить его на web
.
Также убедитесь, что под этой строкой есть строка:
server webbi:19857;
Если вместо webbi
указан localhost
, то необходимо заменить его на webbi
.
Чтобы запустить сборку образа, выполните следующую команду:
docker build -t syntellect/tessa:nginx .
Сборка tadmin¶
Перейдите в папку build
и скопируйте туда файл C:\tessa\docker\tadmin\Dockerfile
.
Настройте tadmin
, отредактировав конфигурационный файл linux/tools/app-db.json
. Убедитесь, что значение для подключения к базе данных соответствует указанному в файле docker-compose.yml
:
Также необходимо настроить tadmin
, отредактировав конфигурационный файл linux/tools/app.json
. Убедитесь, что значение для подключения к Redis соответствует указанному в файле docker-compose.yml
:
Вернитесь в папку build
и в терминале выполните команду для сборки образа:
docker build -t syntellect/tessa:tadmin .
Сборка веб-сервера¶
Перейдите в папку platform
и скопируйте с заменой туда файл C:\tessa\docker\web\Dockerfile
.
В папке web
находится конфигурация app-db.json
, которую нужно отредактировать. Убедитесь, что значение для подключения к базе данных соответствует указанному в файле docker-compose.yml
:
Также в папке web
находится конфигурация app.json
, которую нужно отредактировать. Убедитесь, что значение для подключения к Redis соответствует указанному в файле docker-compose.yml
, измените путь к файлу лицензии:
Используя терминал, из папки platform
запустите сборку:
docker build -t syntellect/tessa:web .
Сборка веб-сервера webbi
для поддержки режима технического обслуживания системы¶
Перейдите в папку platform
и скопируйте с заменой туда файл C:\tessa\docker\webbi\Dockerfile
.
Скопируйте в папку webbi
отредактированный ранее файл конфигурации app.json
из папки web
. Убедитесь, что значения для подключения к базе данных и Redis
соответствуют указанным в файле docker-compose.yml
, ServerCode
соответствует настройке для web
, и измените команду перезапуска nginx
:
Используя терминал, из папки platform
запустите сборку:
docker build -t syntellect/tessa:webbi .
Сборка веб-сервиса jinni
для работы с документами¶
Откройте папку с основной сборкой TESSA (не архив tessa-alpine
, а именно основной архив) и перейдите в подпапку Docker\jinni
.
Выполните настройку конфигурации веб-сервиса и сгенерируйте Dockerfile
. Скопируйте с заменой сгенерированный файл в папку platform
.
Выполните настройку конфигурационных параметров веб-сервиса в файле platform\jinni\app.json
. Убедитесь, что значения для подключения к Redis
соответствуют действительным.
Используя терминал, из папки platform
запустите сборку образа:
docker build -t syntellect/tessa:jinni .
Если требуется выполнить масштабирование веб-сервиса jinni
, то этого можно достичь путём создания нескольких контейнеров на базе одного образа. Для этого необходимо модифицировать файл docker-compose.yml
, задав уникальное имя каждому контейнеру веб-сервиса и указав уникальные публичные конечные точки для доступа к веб-сервисам:
jinni1:
image: syntellect/tessa:jinni
depends_on:
redis:
condition: service_healthy
volumes:
- jinni1:/root/platform/jinni
- lic:/var/lic
environment:
- JINNI_ENDPOINT=http://jinni1:5000
jinni2:
image: syntellect/tessa:jinni
depends_on:
redis:
condition: service_healthy
volumes:
- jinni2:/root/platform/jinni
- lic:/var/lic
environment:
- JINNI_ENDPOINT=http://jinni2:5000
Сборка веб-сервиса monitor
для трассировки и мониторинга системы¶
Перейдите в папку platform
и скопируйте с заменой туда файл C:\tessa\docker\monitor\Dockerfile
.
Используя терминал, из папки platform
запустите сборку:
docker build -t syntellect/tessa:monitor .
Сборка веб-сервиса prometheus
для хранения данных мониторинга системы¶
Перейдите в папку prometheus
и скопируйте туда файл C:\tessa\docker\prometheus\Dockerfile
.
Чтобы запустить сборку образа, выполните следующую команду:
docker build -t syntellect/tessa:prometheus .
Сборка веб-сервиса grafana
для отображения графиков по данным мониторинга системы¶
Перейдите в папку grafana
и скопируйте туда файл C:\tessa\docker\grafana\Dockerfile
.
Чтобы запустить сборку образа, выполните следующую команду:
docker build -t syntellect/tessa:grafana .
Сборка веб-сервиса jaeger
для отображения данных трассировки системы¶
Чтобы запустить сборку образа, перейдите в папку C:\tessa\docker\jaeger
и выполните следующую команду:
docker build -t syntellect/tessa:jaeger .
Установка и запуск контейнеров¶
Вернитесь в основную папку.
При помощи терминала соберите образ с лицензией:
docker-compose -f docker-compose.yml build --no-cache
Создайте контейнеры при помощи команды:
docker-compose -f docker-compose.yml up --no-start
Docker
самостоятельно соберёт недостающие образы с Redis
и Postgres
и на их основе создаст необходимые контейнеры.
Запустим их командой терминала:
docker-compose -f docker-compose.yml start db web nginx tadmin redis webbi
Warning
lic
не запускаем, chronos
, jinni
, monitor
, prometheus
, grafana
и jaeger
запустим после установки.
Если установка прошла успешно, контейнеры в Docker Desktop
должны выглядеть так:
Tip
Имя установленной системы зависит от имени папки, в которую распаковано содержимое. Например, папка tessa
создаёт и управляет системой с именем tessa
. Скопируйте файл лицензии, Dockerfile
, docker-compose.yml
в папку с другим именем, расположенную рядом, и запускайте скрипты из папок с разными именами, чтобы одновременно иметь несколько независимых установленных систем на компьютере.
Проверка работы контейнеров и завершение установки tessa¶
Проверим подключение утилиты tadmin
к базе данных:
docker-compose -f docker-compose.yml exec tadmin linux/tools/tadmin CheckDatabase
Если связь с базой данных прошла без ошибок, в терминале увидим такой результат:
Остаётся установить tessa-alpine
при помощи сценария установки:
docker-compose -f docker-compose.yml exec tadmin linux/setup.sh -db:tessa -cdb -a:https://nginx -tp:/root/build/linux/tools -f:/root/platform/files -wp:/root/platform/web -cp:/root/platform/chronos
Адрес веб сервера: https://nginx
.
Имя базы данных можете указать произвольное, например, tessa
.
Остальные строки оставьте по умолчанию для данной установки системы.
При успешной установке в терминале будет выведена строка:
Перезапустите веб-сервер:
docker-compose -f docker-compose.yml restart web
Запустите Сhronos
, веб-сервис jinni
, а также сервисы monitor
, prometheus
, grafana
и jaeger
:
docker-compose -f docker-compose.yml start chronos jinni monitor prometheus grafana jaeger
Установка завершена. Экземпляр tessa-alpine
будет доступен по адресу https://localhost:номер_порта
. Чтобы узнать номер порта, выполните следующую команду в терминале:
docker-compose -f docker-compose.yml port nginx 443
Результат выполнения этой команды:
Экземпляр prometheus
будет доступен по адресу http://localhost:номер_порта
. Чтобы узнать номер порта, выполните следующую команду в терминале:
docker-compose -f docker-compose.yml port prometheus 9090
Экземпляр grafana
будет доступен по адресу http://localhost:номер_порта
. Чтобы узнать номер порта, выполните следующую команду в терминале:
docker-compose -f docker-compose.yml port grafana 3000
Экземпляр jaeger
будет доступен по адресу http://localhost:номер_порта
. Чтобы узнать номер порта, выполните следующую команду в терминале:
docker-compose -f docker-compose.yml port jaeger 16686
Настройка логирования и обновление расширений¶
Для удобства просмотра логов log.txt
и обновления библиотек серверных расширений extensions
можно создать связи для папок в контейнерах и папок в Windows
, вложенных в локальную папку с файлом docker-compose.yml
, из которой вы выполняли установку системы в Docker
.
Сначала требуется определить имена контейнеров и убедиться, что они функционируют. Откройте командную строку Windows
в папке с файлом docker-compose.yml
. Здесь подразумевается, что установка системы в Docker
уже была выполнена. Определите имена запущенных контейнеров:
docker ps -a
Tip
Ключ -a
выводит помимо запущенных контейнеров также созданные контейнеры, которые не запущены в настоящий момент. Можно опустить этот ключ, если надо отобразить только запущенные контейнеры.
По умолчанию имя контейнера для веб-сервиса называется tessa_web_1
, где tessa
- имя папки с файлом docker-compose.yml
(обычно её имя изменяют для второй установки системы в Docker
на том же сервере), web
- имя контейнера с веб-сервисом, указанное внутри файла docker-compose.yml
, 1
- номер экземпляра контейнера, по умолчанию все контейнеры запускаются в единственном экземпляре.
Аналогично имя контейнера для сервиса Chronos
называется tessa_chronos_1
и для веб-сервиса jinni
называется tessa_jinni_1
. Если у вас используются другие названия, то указывайте их в скриптах ниже.
Теперь запустите контейнеры, если они не запущены (скрипт start.bat
) и проверьте, что корректно выполняется открытие консольной оболочки ash
(аналог bash
для дистрибутива Alpine Linux
). В следующем примере открывается консоль для контейнера tessa_web_1
, далее в нём выводится список файлов в папке веб-сервиса ls
, и консоль закрывается exit
:
docker exec -it tessa_web_1 ash
ls
exit
Аналогичную проверку выполните для сервиса Chronos
в контейнере tessa_chronos_1
и веб-сервиса jinni
в контейнере tessa_jinni_1
.
Откройте командную строку Windows
в папке с файлом docker-compose.yml
.
Скопируйте папку с серверными расширениями из контейнера с веб-сервисом следующей командой. При этом в текущей папке будет создана подпапка extensions
с библиотеками расширений и файлом extensions.xml
. В контейнере Chronos
эта папка полностью идентична, поэтому достаточно скопировать из веб-сервиса.
docker cp tessa_web_1:/root/platform/web/extensions .
Note
При обратном копировании командой docker cp
, когда файлы были скопированы из папки Windows
в контейнер, такие файлы будут сохранены только до следующего запуска контейнера (скрипт start.bat
или команда docker-compose up
). Если вы хотите копировать некоторые файлы настроек при каждом запуске контейнера, то доработайте скрипт start.bat
по своему усмотрению и запускайте его каждый раз после запуска сервера.
Скопируйте файлы NLog.config
из контейнеров веб-сервиса, сервиса Chronos
и веб-сервиса Jinni в подпапки logs_chronos
, logs_web
и logs_jinni
, предварительно их необходимо создать командой mkdir
:
mkdir logs_chronos logs_web logs_jinni
docker cp tessa_chronos_1:/root/platform/chronos/logs/NLog.config ./logs_chronos
docker cp tessa_web_1:/root/platform/web/logs/NLog.config ./logs_web
docker cp tessa_jinni_1:/root/platform/jinni/logs/NLog.config ./logs_jinni
В файлах NLog.config
, который появится в подпапках logs_chronos
, logs_web
и logs_jinni
, вы можете настроить логирование по своим правилам. Например, чтобы логируемые сообщения записывались в отдельные файлы каждый день с созданием подпапок с номером месяца и года. Подробная информация по настройкам NLog.config
доступна в документации по библиотеке NLog
: https://github.com/NLog/NLog/wiki/Configuration-file
Для создания связи между локальной папкой в Windows
и папками в контейнере потребуется отредактировать файл docker-compose.yml
, в который добавить в разделы volumes
соответствующих контейнеров строку следующего вида (не добавляйте её, это пример):
volumes:
- ./ПАПКА_В_Windows:/root/platform/ПАПКА_В_КОНТЕЙНЕРЕ
Где /root/platform
- путь к домашней папке в контейнерах приложения TESSA.
Warning
После настройки связи каждый раз, когда контейнер будет запущен (скрипт start.bat
или команда docker-compose up
), содержимое соответствующей папки в контейнере будет очищено. После этого выполняется копирование всех файлов и подпапок из папки в Windows
в папку в контейнере. Далее при изменении этой папки в контейнере она изменяется в Windows
и в любых других контейнерах, связанных с той же папкой в Windows
. Также, если вы изменяете папку в Windows
, то она автоматически изменяется во всех связанных контейнерах, т.е. связь двусторонняя.
Теперь отредактируйте docker-compose.yml
, добавив связи для папок с логами в текущей папке с файлом docker-compose.yml
.
-
Папка
extensions
содержит расширения, одинаковые для веб-сервиса иChronos
. -
Папка
logs_web
будет содержать логи веб-сервиса, по умолчанию это файлlog.txt
. -
Папка
logs_chronos
будет содержать логиChronos
, по умолчанию это файлlog.txt
. -
Папка
logs_jinni
будет содержать логи веб-сервиса Jinni, по умолчанию это файлlog.txt
.
Троеточием обозначены пропущенные строки, которые будут перед строками связей, которые требуется добавить (строка связи начинается со знака дефиса):
web:
...
volumes:
...
- ./extensions:/root/platform/web/extensions
- ./logs_web:/root/platform/web/logs
...
chronos:
...
volumes:
...
- ./extensions:/root/platform/chronos/extensions
- ./logs_chronos:/root/platform/chronos/logs
...
jinni:
...
volumes:
...
- ./logs_jinni:/root/platform/jinni/logs
Для применения изменений остановите контейнеры скриптом stop.bat
и снова запустите их скриптом start.bat
.
Note
Первый раз при запуске контейнера с привязанными папками может отобразиться предупреждение вида Share disk C:\ with container?
, подтвердите его, при этом потребуется ввести пароль администратора Windows
. Если после этого вы получите ошибку в окне консоли вида Drive sharing seems blocked by a firewall
, то настройте правила вашего firewall
в соответствии с инструкцией: https://docs.docker.com/docker-for-windows/#firewall-rules-for-shared-drives (обычно требуется отключить блокировку входящих соединений TCP по порту 445). После настройки повторите команду запуска контейнеров.
Tip
Также можно разрешить общий доступ из контейнера к дискам Windows
, открыв окно Settings
в контекстном меню Docker Desktop
в трее, и на вкладке Shared Drives
выбрав нужную букву диска и нажав Apply
. Если вы не настроили firewall
, и он блокирует порты, то вы также получите предупреждение. Docker
гарантирует, что контейнер получает доступ к указанным подпапкам Windows
, в соответствии с настроенной связью в docker-compose.yml
, но разрешить доступ требуется для всего диска C:\
(или другого диска, где расположен docker-compose.yml
).
Когда необходимо изменить файлы конфигурации или обновить расширения, и приложение TESSA уже работает в контейнерах Docker
, то для применения изменений потребуется остановить stop.bat
и снова запустить приложение start.bat
. Вы можете дорабатывать эти скрипты по своим требованиям.