Перейти к содержанию

Установка платформы 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”. Скопируйте содержимое этой папки в папку с другим именем, расположенную рядом, и запускайте скрипты из папок с разными именами, чтобы одновременно иметь несколько независимых инсталляций на компьютере.

Скопируйте ваш файл лицензии *.tlic в текущую папку с инсталляцией (папка “tessa”).

Запустите скрипт install.bat, нажмите любую клавишу для начала установки и дождитесь её завершения.

Tip

По умолчанию система скачивает и установливает последнюю сборку платформы TESSA, опубликованную в репозитории Docker Hub. Вы можете перед установкой отредактировать файл docker-compose.yml, указав конкретные версии образов syntellect/tessa:*** (свойство image), добавив номер сборки и знак дефиса, например: syntellect/tessa:3.5.0-web. Версии для образов web, chronos, nginx и tadmin должны совпадать. По аналогии можно использовать теги syntellect/tessa:3.5-web для последней опубликованной сборки 3.5.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”, в т.ч. по запуску, остановке, удалению контейнеров и др.

  1. Для остановки без удаления данных (из базы данных и файловых хранилищ) вызовите скрипт stop.bat.

  2. Для повторного запуска вызовите start.bat, новый адрес порта будет отображён в консоли (или предыдущий адрес, если сервисы не останавливались)

  3. После перезагрузки контейнеры будут остановлены, для их запуска вызовите start.bat после того, как на значке Docker в трее будет всплывающая подсказка “Docker Desktop is running”.

  4. Для остановки и удаления данных из контейнеров вызовите uninstall.bat.

  5. Для повторной установки “чистой” системы вызовите install.bat. Предварительно вызывать uninstall.bat не нужно, данные предыдущей инсталляции будут удалены, если присутствовали.

  6. Для полной очистки Docker и всех его кэшей: в меню на значке Docker в трее выберите Settings, перейдите на вкладку Reset и выберите Reset to factory defaults. Дождитесь завершения очистки и заново вызовите install.bat.

  7. Посредством скрипта 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.

  1. Папка extensions содержит расширения, одинаковые для веб-сервиса и Chronos.

  2. Папка logs_web будет содержать логи веб-сервиса, по умолчанию это файл log.txt.

  3. Папка 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. Вы можете дорабатывать эти скрипты по своим требованиям.

Back to top