Установка платформы 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
. Если при выполнении скрипта install.bat
на этапе Checking connection to web service
возникла ошибка, необходимо отключить этот флаг и после перезапуска Docker
запустить скрипт повторно.
Установка с использованием Docker Desktop на ОС Windows¶
Необходимо скачать и установить Docker Desktop
(на сайте потребуется зарегистрироваться, регистрация бесплатна): https://www.docker.com/products/docker-desktop
После установки необходимо перезагрузить устройство. При первом запуске 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
на конце - номер патча.
Также должен быть распакован архив с основной сборкой TESSA, именуемый как tessa-4.0-0.7z
(где 4.0
- версия релиза платформы, и 0
на конце - номер патча) в любую папку (далее - C:\tessa-build
).
Note
Для вашего релиза и патча архив будет называться соответствующим образом. Если у вас его нет, то запросите его получение у вендора.
Чтобы подготовить дистрибутив к работе, требуется:
- Скопировать в папку
C:\tessa
папкуauthorized_keys
из папки[путь до основной сборки]\Docker\tessa\authorized_keys
, т.е. должна быть создана папкаC:\tessa\authorized_keys
. - Скопировать в папку
C:\tessa\platform
папкуjinni
изC:\tessa-build\linux
, т.е. должна быть создана папкаC:\tessa\platform\jinni
. - Скопировать в папку
C:\tessa\docker
папкуjinni
изC:\tessa-build\Docker
, т.е. должна быть создана папкаC:\tessa\docker\jinni
. - Скопировать в папку
C:\tessa
содержимое папкиC:\tessa\docker\tessa-alpine
с заменой файлов. - Скопировать в папку
C:\tessa
содержимое папкиC:\tessa\docker\tessa
. - Скопировать файл лицензии с расширением
.jlic
или.tlic
в папкуC:\tessa
.
Итоговый дистрибутив должен выглядеть так:
Сборка Chronos¶
Необходимо перейти в папку C:\tessa\platform
, скопировать туда файл с именем C:\tessa\docker\chronos\Dockerfile
и убедиться, что:
-
в конфигурационном файле
C:\tessa\platform\chronos\app-db.json
в параметреHost
указано имя контейнераdb
для СУБД PostgreSQL, а также указаны имя базы данныхDatabase
, логинUser ID
и парольPassword
пользователя в соответствии с тем, что прописано в файлеdocker-compose.yml
в блокеdb:
. -
в конфигурационном файле
C:\tessa\platform\chronos\app-ext.json
в строке подключения к сервису Redis указана настройка"Redis": "redis"
, где значением является имя контейнераredis
(в соответствии сdocker-compose.yml
, где он обозначен в блокеredis:
). -
в конфигурационном файле
C:\tessa\platform\chronos\app-ext.json
указана настройка"LicenseFile": "/var/lic/*.?lic"
, содержащая путь к файлам лицензии.
В терминале следует перейти в папку C:\tessa\platform
и выполнить команду для сборки образа контейнера (container image) по скопированному ранее файлу Dockerfile
:
docker build -t syntellect/tessa:chronos .
Сборка nginx¶
Необходимо перейти в папку C:\tessa\nginx
и скопировать туда файл с именем C:\tessa\docker\nginx\Dockerfile
.
Затем открыть файл C:\tessa\nginx\default.conf
.
-
Убедиться, что в начале этого файла указана строка:
server web:5000;
Если вместо
web
указанlocalhost
, то необходимо заменить его наweb
. -
Убедиться, что под этой строкой есть строка:
server webbi:19857;
Если вместо
webbi:19857
указанlocalhost:19857
, то заменить, как указано выше.
В терминале следует перейти в папку C:\tessa\nginx
и выполнить команду для сборки образа контейнера (container image) по скопированному ранее файлу Dockerfile
:
docker build -t syntellect/tessa:nginx .
Сборка tadmin¶
Необходимо перейти в папку C:\tessa\build
и скопировать туда файл с именем C:\tessa\docker\tadmin\Dockerfile
.
-
Убедиться, что в конфигурационном файле утилиты
tadmin
, а именноC:\tessa\build\linux\tools\app-db.json
, строка подключения к базе данных соответствует значениям в файлеC:\tessa\platform\chronos\app-db.json
(который настроен согласноdocker-compose.yml
): -
Убедиться, что в конфигурационном файле
C:\tessa\build\linux\tools\app-ext.json
строка подключения к Redis соответствует таковой в файлеC:\tessa\platform\chronos\app-ext.json
(который настроен согласноdocker-compose.yml
):
В терминале следует перейти в папку C:\tessa\build
и выполнить команду для сборки образа контейнера (container image) по скопированному ранее файлу Dockerfile
:
docker build -t syntellect/tessa:tadmin .
Сборка веб-сервиса web
¶
Необходимо перейти в папку C:\tessa\platform
и скопировать туда файл с именем C:\tessa\docker\web\Dockerfile
.
-
Убедиться, что в конфигурационном файле веб-сервиса
web
, а именноC:\tessa\platform\web\app-db.json
, строка подключения к базе данных соответствует значениям в файлеC:\tessa\platform\chronos\app-db.json
(который настроен согласноdocker-compose.yml
): -
Убедиться, что в конфигурационном файле
C:\tessa\platform\web\app-ext.json
строка подключения к Redis соответствует таковой в файлеC:\tessa\platform\chronos\app-ext.json
(который настроен согласноdocker-compose.yml
):
В терминале следует перейти в папку C:\tessa\platform
и выполнить команду для сборки образа контейнера (container image) по скопированному ранее файлу Dockerfile
:
docker build -t syntellect/tessa:web .
Сборка веб-сервиса webbi
для поддержки режима технического обслуживания системы¶
Необходимо перейти в папку C:\tessa\platform
и скопировать туда файл с именем C:\tessa\docker\webbi\Dockerfile
.
- Убедиться, что в конфигурационном файле
C:\tessa\platform\webbi\app-ext.json
строка подключения к Redis соответствует таковой в файлеC:\tessa\platform\chronos\app-ext.json
(который настроен согласноdocker-compose.yml
). - Убедиться, что в конфигурационном файле
C:\tessa\platform\webbi\app-ext.json
команда перезапускаnginx
указана как пустая строка:"ReloadCommand": ""
.
В терминале следует перейти в папку C:\tessa\platform
и выполнить команду для сборки образа контейнера (container image) по скопированному ранее файлу Dockerfile
:
docker build -t syntellect/tessa:webbi .
Сборка веб-сервиса jinni
для работы с документами¶
Необходимо перейти в папку C:\tessa\platform
и скопировать туда файл с именем C:\tessa\docker\jinni\Dockerfile
.
Tip
При необходимости можно настроить конфигурацию сервиса jinni, ограничив ему набор используемых функций (например, выключить поддержку распознавания OCR). Для этого требуется выполнить python
скрипт по инструкции в ссылке, и скопировать заново файл C:\tessa\docker\jinni\Dockerfile
в C:\tessa\platform
.
- Убедиться, что в конфигурационном файле сервиса
jinni
, а именноC:\tessa\platform\jinni\app-ext.json
, строка подключения к Redis соответствует таковой в файлеC:\tessa\platform\chronos\app-ext.json
(который настроен согласноdocker-compose.yml
).
В терминале следует перейти в папку C:\tessa\platform
и выполнить команду для сборки образа контейнера (container image) по скопированному ранее файлу Dockerfile
:
docker build -t syntellect/tessa:jinni .
Если требуется использовать несколько копий контейнера jinni
для распределения нагрузки и отказоустойчивости, то можно модифицировать файл docker-compose.yml
, задав уникальное имя каждому контейнеру (jinni1
, jinni2
и т.п.) и указав уникальные публичные адреса (endpoints) для доступа к сервисам jinni
:
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
для трассировки и мониторинга системы¶
Необходимо перейти в папку C:\tessa\platform
и скопировать туда файл с именем C:\tessa\docker\monitor\Dockerfile
.
В терминале следует перейти в папку C:\tessa\platform
и выполнить команду для сборки образа контейнера (container image) по скопированному ранее файлу Dockerfile
:
docker build -t syntellect/tessa:monitor .
Сборка веб-сервиса prometheus
для хранения данных мониторинга системы¶
Необходимо перейти в папку C:\tessa\prometheus
и скопировать туда файл с именем C:\tessa\docker\prometheus\Dockerfile
.
В терминале следует перейти в папку C:\tessa\prometheus
и выполнить команду для сборки образа контейнера (container image) по скопированному ранее файлу Dockerfile
:
docker build -t syntellect/tessa:prometheus .
Сборка веб-сервиса grafana
для отображения графиков по данным мониторинга системы¶
Необходимо перейти в папку C:\tessa\grafana
и скопировать туда файл с именем C:\tessa\docker\grafana\Dockerfile
.
В терминале следует перейти в папку C:\tessa\grafana
и выполнить команду для сборки образа контейнера (container image) по скопированному ранее файлу Dockerfile
:
docker build -t syntellect/tessa:grafana .
Сборка веб-сервиса jaeger
для отображения данных трассировки системы¶
В терминале следует перейти в папку C:\tessa\docker\jaeger
и выполнить команду для сборки образа контейнера (container image) по расположенному там файлу Dockerfile
:
docker build -t syntellect/tessa:jaeger .
Установка и запуск контейнеров¶
В терминале следует перейти в папку C:\tessa
и выполнить команду для сборки приложения Docker Compose (компонент Docker для создания приложений - связанных контейнеров) с учётом расположенного в этой папке файла с лицензией (.jlic
или .tlic
).
docker-compose -f docker-compose.yml build --no-cache
Note
Имя приложения Docker Compose определяется в соответствии с именем папки, в которой расположен файл docker-compose.yml
, т.е. для папки C:\tessa
указано имя tessa
.
Чтобы переименовать приложение, надо переименовать папку C:\tessa
. Важно только имя вышестоящей папки, т.е., например, она может быть расположена по пути C:\Docker\tessa
.
Создать контейнеры можно при помощи команды в терминале:
docker-compose -f docker-compose.yml up --no-start
Docker
самостоятельно соберёт недостающие контейнеры с СУБД PostgreSQL и Redis внутри приложения Docker Compose, и на их основе создаст необходимые контейнеры.
Запустить контейнеры в приложении Docker Compose можно при помощи команды в терминале:
docker-compose -f docker-compose.yml start db web nginx tadmin redis webbi
Warning
Контейнер lic
не требуется запускать. Контейнеры chronos
, jinni
, monitor
, prometheus
, grafana
и jaeger
будут запущены позже.
Если установка прошла успешно, контейнеры в Docker Desktop
должны выглядеть так:
Tip
Возможно создать новый экземпляр системы, в которой будут другие данные (СУБД PostgreSQL с отдельной базой данных, Redis, файловое хранилище) и может быть другая лицензия, но используются копии контейнеров с бинарными данными (та же версия платформы и расширения).
Для этого требуется создать папку с другим именем (например, C:\tessa2
), в которую надо скопировать только файл лицензии (.jlic
или .tlic
), Dockerfile
и docker-compose.yml
из папки C:\tessa
. После чего перейти в терминале в эту папку и повторить вызовы docker-compose
, указанные в этом подразделе, и далее установить систему.
Таким образом, будет создано отдельное приложение Docker Compose
со своими независимыми экземплярами контейнеров. В результате имеется несколько независимых установленных систем на компьютере.
Проверка работы контейнеров и завершение установки TESSA¶
Необходимо проверить подключение утилиты tadmin
к базе данных (все команды должны быть выполнены в терминале в папке C:\tessa
с файлом docker-compose.yml
):
docker-compose -f docker-compose.yml exec tadmin linux/tools/tadmin CheckDatabase
Если связь с базой данных прошла без ошибок, в терминале будет результат:
Чтобы установить систему TESSA скриптом setup.sh
необходимо выполнить в терминале следующую команду:
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
(гдеnginx
- имя контейнера вdocker-compose.yml
). - Имя базы данных должно быть таким же, какое указано в файлах
app-db.json
в подразделах выше (в соответствии с указанным именем БД вdocker-compose.yml
). - Остальные строки можно оставить по умолчанию для данной установки системы.
При успешной установке в терминале будет выведена строка:
Необходимо перезапустить контейнер веб-сервиса web
, выполнив в терминале:
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, установленный в Docker, будет доступен по адресу https://localhost:номер_порта
. Чтобы узнать номер порта, следует выполнить следующую команду в терминале:
docker-compose -f docker-compose.yml port nginx 443
Результат выполнения этой команды:
Экземпляр prometheus
(для отображения телеметрии в исходном виде, которая передаётся в grafana
) будет доступен по адресу 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
. Можно дорабатывать эти скрипты по своим требованиям.