Установка платформы 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, в ней в папке 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:3.6.0-web
. Версии для образов web
, chronos
, nginx
и tadmin
должны совпадать. По аналогии можно использовать теги syntellect/tessa:3.6-web
для последней опубликованной сборки 3.6.x
, syntellect/tessa:3-web
для последней опубликованной сборки 3.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
Настройка логирования и обновление расширений¶
Для удобства просмотра логов 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
. Если у вас используются другие названия, то указывайте их в скриптах ниже.
Теперь запустите контейнеры, если они не запущены (скрипт start.bat
) и проверьте, что корректно выполняется открытие консольной оболочки ash
(аналог bash для дистрибутива Alpine Linux). В следующем примере открывается консоль для контейнера tessa_web_1
, далее в нём выводится список файлов в папке веб-сервиса ls
, и консоль закрывается exit
:
docker exec -it tessa_web_1 ash
ls
exit
Аналогичную проверку выполните для сервиса Chronos в контейнере tessa_chronos_1
.
Откройте командную строку Windows в папке с файлом docker-compose.yml
.
Скопируйте папку с серверными расширениями из контейнера с веб-сервисом следующей командой. При этом в текущей папке будет создана подпапка “extensions” с библиотеками расширений и файлом extensions.xml
. В контейнере Chronos эта папка полностью идентична, поэтому достаточно скопировать из веб-сервиса.
docker cp tessa_web_1:/root/tessa/web/extensions .
Note
При обратном копировании командой docker cp
, когда файлы были скопированы из папки Windows в контейнер, такие файлы будут сохранены только до следующего запуска контейнера (скрипт start.bat
или команда docker-compose up
). Если вы хотите копировать некоторые файлы настроек при каждом запуске контейнера, то доработайте скрипт start.bat
по своему усмотрению и запускайте его каждый раз после запуска сервера.
Скопируйте файлы NLog.config
из контейнеров веб-сервиса и сервиса Chronos в подпапки logs_chronos
и logs_web
, предварительно их необходимо создать командой mkdir
:
mkdir logs_chronos logs_web
docker cp tessa_chronos_1:/root/tessa/chronos/logs/NLog.config ./logs_chronos
docker cp tessa_web_1:/root/tessa/web/logs/NLog.config ./logs_web
В файлах NLog.config
, который появится в подпапках logs_chronos
и logs_web
, вы можете настроить логирование по своим правилам. Например, чтобы логируемые сообщения записывались в отдельные файлы каждый день с созданием подпапок с номером месяца и года. Подробная информация по настройкам NLog.config
доступна в документации по библиотеке NLog
: https://github.com/NLog/NLog/wiki/Configuration-file
Для создания связи между локальной папкой в Windows и папками в контейнере потребуется отредактировать файл docker-compose.yml
, в который добавить в разделы volumes
соответствующих контейнеров строку следующего вида (не добавляйте её, это пример):
volumes:
- ./ПАПКА_В_Windows:/root/tessa/ПАПКА_В_КОНТЕЙНЕРЕ
Где /root/tessa
- путь к домашней папке в контейнерах приложения 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
.
Троеточием обозначены пропущенные строки, которые будут перед строками связей, которые требуется добавить (строка связи начинается со знака дефиса):
web:
...
volumes:
...
- ./extensions:/root/tessa/web/extensions
- ./logs_web:/root/tessa/web/logs
...
chronos:
...
volumes:
...
- ./extensions:/root/tessa/chronos/extensions
- ./logs_chronos:/root/tessa/chronos/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
. Вы можете дорабатывать эти скрипты по своим требованиям.