Развертывание BPMSoft через Docker на Linux

Средний
Инструкция подходит для развертывания в своем окружении, соответствующем системным требованиям BPMSoft. При развертывании BPMSoft в инфраструктуре других облачных провайдеров необходимо учитывать особенности и возможные ограничения инфраструктуры и предоставляемых доступов. Для уточнения деталей или при возникновении вопросов рекомендуем обратиться к документации или поддержке облачного провайдера.

В BPMSoft, начиная с версии 1.7, есть возможность развернуть приложение с использованием Docker-образа.

Рекомендуем использовать данный способ развертывания только для непродуктивных сред.

Таблица 1 — Ограничения к веб-серверу и серверу базы данных

Платформа База данных Сервер кэширования Операционная система Версия Docker Compose
.NET 8 PostgreSQL Redis Актуальные операционные системы семейства Linux, заявленные в системных требованиях 2.3.0 и выше.

Обновление Docker Compose описано в официальной документации

Подготовка к развертыванию BPMSoft

Перед установкой убедитесь в том, что среда, на которую вы хотите устанавливать приложение, соответствует системным требованиям BPMSoft.
Для корректной работы приложения в Docker рекомендуется создать на хосте пользователя с UID и GID равным 1000:1000. Убедитесь, что этот пользователь является владельцем директории app. Это обеспечит правильную обработку файлов и предотвратит проблемы с правами доступа внутри Docker-контейнера.

Перед развертыванием BPMSoft через Docker выполните следующие шаги:

  1. Разархивируйте в любое удобное место архив с файлами для развертывания приложения в Docker.
Примечание. Для предоставления доступа к архиву с файлами для развертывания обратитесь в Техническую поддержку BPMSoft.
  1. Настройте источник образов. Авторизуйтесь на ресурсе repo.bpmsoft.ru, используя команду:
docker login repo.bpmsoft.ru
Примечание. Для предоставления доступа к ресурсу repo.bpmsoft.ru обратитесь в Техническую поддержку BPMSoft.
  1. Запустите скрипт init.sh, который подготавливает конфигурацию BPMSoft и параметризует docker-compose.yml. Скрипт находится в папке с файлами для развертывания приложения.
Команды для запуска скрипта
#Перейдите в директорию deploy внутри проекта
cd deploy

#Установите права на исполнение для скрипта init.sh
chmod +x init.sh
 
#Запустите скрипт
./init.sh

Во время выполнения скрипта он запросит несколько параметров, необходимых для корректной конфигурации приложения. Подробнее: Конфигурирование BPMSoft.

Конечным итогом выполнения скрипта init.sh будет создание файла .env, который содержит значения переменных для docker-compose.yml. Также будут внесены необходимые изменения в конфигурационные файлы приложения (ConnectionStrings.config, appsettings.json) и сформирован самоподписанный сертификат.

После выполнения скрипта можно перейти к установке BPMSoft через Docker.

Конфигурирование BPMSoft

После запуска скрипта init.sh пользователю последовательно будут заданы вопросы, позволяющие сформировать конфигурацию приложения BPMSoft.

Выбор образа

Формулировка вопроса: «Введите название образа. Формат: [Image]:[Tag]».

Введите название образа и тег в формате [Image]:[Tag], где Image — тип сборки, Tag — версия.

Доступные образы можно посмотреть в реестре Docker-образов в ресурсе repo.bpmsoft.ru.

Ввод порта приложения

Формулировка вопроса: «Введите порт приложения».

Укажите порт хоста для доступа к приложению.

Настройка подключения по HTTP/HTTPS

Формулировка вопроса: «Использовать SSL? Да - (y)? Нет - (n)?».

Возможны два варианта ответа:

Примечание. Для настройки работы по протоколу HTTP в файле BPMSoft.WebHost.dll.config нужно указать значение Lax для параметра CookiesSameSiteMode. Если вы разворачиваете систему через скрипт init.sh, это значение установится автоматически.

Настройка доступа по HTTPS

Формулировка вопроса: «Сгенерировать самоподписанный сертификат? Да - (y)? Нет - (n)?».

Возможны два варианта ответа:

  • y — необходимо будет указать параметры для создания самоподписанного сертификата;
Сгенерировать самоподписанный сертификат? Да - (y)? Нет - (n)? (по умолчанию: y): y
Создаем самоподписанный сертификат...
Введите страну для сертификата (C) (по умолчанию: RU):
Введите регион для сертификата (ST) (по умолчанию: Moscow):
Введите город для сертификата (L) (по умолчанию: Moscow):
Введите организацию для сертификата (O) (по умолчанию: BPMSoft):
Введите отдел для сертификата (OU) (по умолчанию: Dev):
Введите общее имя для сертификата (CN) (по умолчанию: localhost):
Задайте пароль для сертификата (CN) (по умолчанию: PaSsWoRd):
  • n — необходимо будет указать путь к файлу сертификата .pfx и его пароль.
Сгенерировать самоподписанный сертификат? Да - (y)? Нет - (n)? (по умолчанию: y): n
Введите пароль от вашего сертификата. Данный пароль будет установлен в appsettings.json (по умолчанию: PaSsWoRd):
Введите путь до вашего сертификата .pfx (по умолчанию: /app/Certificates/localhost.pfx):

Настройка параметров подключения к базе данных

Формулировка вопроса: «Создать контейнер с базой данных? Да - (y)? Нет - (n)?».

Возможны два варианта ответа:

  • y — создастся контейнер с PostgreSQL;
  • n — необходимо будет указать информацию для подключения к существующей базе данных PostgreSQL.

Создание новых компонентов

Если будет выбран ответ y, система автоматически создаст название базы данных, имя пользователя и пароль. Эти данные будут доступны в файле .env:

  • Postgres_DB — название базы данных;
  • Postgres_User — имя пользователя базы данных;
  • Postgres_Password — пароль пользователя базы данных.

После ввода ответа y необходимо указать путь для хранения файлов базы данных и порт для развертывания базы данных.

Хранение файлов базы данных

Формулировка вопроса: «Введите путь для хранения файлов базы данных».

Путь для хранения файлов базы данных — это директория, в которой будут размещаться файлы базы данных на хосте в качестве постоянного хранилища.

  • Если указанная директория отсутствует, скрипт создаст ее автоматически;
  • Если директория уже существует и содержит данные, скрипт выведет предупреждение:
Внимание! Директория ./db_data уже существует.
Возможно, ранее уже была выполнена инициализация базы данных по этому каталогу.
Убедитесь, что база данных с именем "bpm", а также пользователь "user" и его пароль "pass" существуют!
Также вы можете переопределить путь к каталогу с базой данных.
Вы действительно хотите оставить текущий каталог базы данных:./db_data - (y)? Или создать новый - (n)?  (по умолчанию: y)

Если необходимо изменить эти параметры, выполните одно из следующих действий:

  • Укажите новую директорию для хранения данных базы;
  • Удалите существующую директорию (обратите внимание, что для этого могут потребоваться права sudo, например: sudo rm -rf ./db_data).

Если в указанной директории уже содержатся данные базы, то имя пользователя, пароль и имя базы данных не будут изменены. Это связано с тем, что база данных не может быть повторно проинициализирована при повторном запуске скрипта.

Порт развертывания базы данных

Формулировка вопроса: «Введите порт на котором будет развернута база данных».

Введите порт хоста, по которому будет осуществляться доступ к PostgreSQL

Подключение к существующей базе данных

Если будет выбран ответ n, скрипт задаст вопросы, связанные с настройками базы данных.

Вопросы, связанные с настройками базы данных
Выполнить восстановление резервной копии базы данных? Да - (y)? Нет - (n)? 
Введите адрес хоста с базой данных
Введите название базы данных
Введите имя пользователя базы данных
Введите пароль пользователя базы данных
Восстановление резервной копии базы данных

Формулировка вопроса: «Выполнить восстановление базы данных из резервной копии? Да - (y)? Нет - (n)?».

Возможны два варианта ответа:

  • y — будет создан контейнер, который запустит восстановление резервной копии базы данных;
  • n — восстановление резервной копии базы данных не будет запущено.

Если база данных пуста, нужно восстановить ее.

Если база данных заполнена и восстановление не требуется, введите значение n.

Заполнение адреса хоста с сервером базы данных

Формулировка вопроса: «Введите адрес на котором развернута база данных».

Укажите адрес хоста, где работает сервер базы данных.

Если сервер базы данных находится на том же хосте, что и Docker, используйте значение host.docker.internal.

Заполнение названия базы данных

Формулировка вопроса: «Введите название базы данных».

Укажите название имеющейся базы данных.

Заполнение имени пользователя базы данных

Формулировка вопроса: «Введите имя пользователя базы данных».

Укажите имя пользователя, имеющего доступ к базе данных из пункта Заполнение названия базы данных.

Заполнение пароля пользователя базы данных

Формулировка вопроса: «Введите пароль пользователя базы данных».

Укажите пароль пользователя из пункта Заполнение имени пользователя базы данных.

Заполнение порта базы данных

Формулировка вопроса: «Введите порт на котором развернута база данных».

Укажите порт хоста, где работает сервер базы данных.

Настройка параметров подключения к серверу кэширования

Формулировка вопроса: «Создать контейнер с сервисом для кэширования?».

Возможны два варианта ответа:

  • y — создастся контейнер с Redis, который будет доступен только внутри сети развернутых контейнеров;
  • n — необходимо указать информацию для подключения к существующему серверу кэширования Redis.

Подключение к существующему серверу кэширования

Если будет выбран ответ n, скрипт задаст вопросы, связанные с настройками сервера кэширования.

Вопросы, связанные с настройками сервера кэширования
Введите адрес, на котором развернут сервис для кэширования
Введите порт, на котором развернут сервис для кэширования
Заполнение адреса хоста с сервером кэширования

Формулировка вопроса: «Введите адрес, на котором развернут сервис для кэширования».

Укажите адрес хоста, где работает сервер кэширования.

Если сервер кэширования находится на том же хосте, что и Docker, используйте значение host.docker.internal.

Заполнение порта сервера кэширования

Формулировка вопроса: «Введите порт, на котором развернут сервис для кэширования».

Укажите порт хоста, где работает сервер кэширования.

Установка BPMSoft через Docker

Установка BPMSoft запускается автоматически после выполнения скрипта init.sh. Если процесс не начался или возникли сложности, следуйте этой инструкции.

Если возникла ошибка при автоматическом запуске контейнеров из init.sh файла можно запустить вручную командой, которая представлена ниже, заменив [Deployment_Files] значением переменной Deployment_Files из файла .env:

docker compose [Deployment_Files] up -d

В зависимости от перечисления docker-compose файлов в переменной Deployment_Files могут быть запущены контейнеры:

  • postgres — база данных приложения;
  • db-init — временный контейнер, предназначенный для инициализации и восстановления базы данных PostgreSQL;
  • redis — сервер кэширования;
  • app-init – временный контейнер, предназначенный для копирования конфигурационных файлов BPMSoft на хост;
  • bpmsoft — контейнер с приложением BPMSoft.

Контейнеры запускаются в определенном порядке:

  • Первыми запускаются контейнеры app-init, postgres и redis;
  • Далее, после запуска postgres, запускается контейнер db-init;
  • После запуска postgres и redis, и успешного завершения работы app-init и db-init, запускается контейнер bpmsoft.

После успешного копирования конфигурационных файлов BPMSoft на хост и инициализации базы данных контейнеры app-init и db-init завершат работу и останутся три контейнера:

  • postgres — база данных приложения;
  • redis — сервер кэширования;
  • bpmsoft – приложение BPMSoft.

Подождите пока все контейнеры запустятся и успешно пройдут проверку работоспособности (health check).

Рисунок 1 — Запущенные контейнеры

Рисунок 1 — Запущенные контейнеры

Логирование

Для просмотра логов контейнера выполните команду:

docker logs [название контейнера]

Логи приложения BPMSoft находятся в папке Logs основного приложения. Подробнее: Логирование NLog

Изменение портов приложения внутри контейнера

При изменении портов приложения внутри контейнера в appsettings.json нужно обновить переменные среды в файле .env в папке deploy:

  1. Изменить BPMSoft_Container_Port — указать порт внутри контейнера, через который можно получить доступ к приложению.
  2. Добавить или изменить переменные, участвующие в формировании адреса, по котором проходит healthcheck контейнера:
    • HealthCheck_BPMSoft_Container_Port — порт внутри контейнера, по которому есть доступ к приложению;
    • HealthCheck_BPMSoft_Container_Protocol — протокол, использующий порт из переменной HealthCheck_BPMSoft_Container_Port.

После редактирования файла .env перезапустите контейнер с приложением. Для этого выполните команду в папке deploy, заменив [Deployment_Files] значением переменной Deployment_Files из файла .env:

Шаблон команды перезапуска контейнера с BPMSoft
docker compose [Deployment_Files] up bpm-app -d

Обновление BPMSoft

Описание процесса обновления BPMSoft, развернутого через Docker, представлено в статье Обновление BPMSoft, развернутого через Docker.

Рекомендуем изучить

Системные требования BPMSoft

Материал был полезен для вас?
Запросить демонстрацию
Купить приложение
Заявка на индивидуальный тренинг
Заявка на обучение в формате тренинга
Заявка на консультацию по обучению
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Вебинар: 10 ноября в 11:00
Разберём, как повысить эффективность управления ИТ-инфраструктурой с помощью ITSM и Service Desk. Обсудим, как сократить операционные затраты и ускорить бизнес-процессы в 2 раза, на реальном опыте ПАО «Трубная металлургическая компания» (ТМК) и Группы Rubytech.
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Предпочитаемый способ связи
Регистрация на мероприятие
Типовое внедрение
Внедрите BPMSoft CRM в свою компанию всего за 8 рабочих дней по фиксированной цене! Заполните заявку для уточнения условий.
Предпочитаемый способ связи
Оставить заявку
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время.
Предпочитаемый способ связи
Демонстрационная версия BPMSoft
Заполните заявку для получения бесплатного доступа к демонстрационному стенду на 14 дней.
Заказать презентацию
Наш менеджер свяжется с Вами в ближайшее время.
Предпочитаемый способ связи
Рассчитать стоимость
Предпочитаемый способ связи
Лучшие CRM-системы в России: выводы Фонда «Сколково»
Задать вопрос
Предпочитаемый способ связи
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Присоединяйтесь к партнерской сети BPMSoft
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время
Тип партнерства*
Управление полным жизненным циклом клиента: от генерации лидов и продаж до внедрения, поддержки и продления подписки.
Разработка собственного Приложения – производного программного обеспечения, созданного на платформе BPMSoft (Базовое ПО).
Заявка на онлайн-консультации по BPMSoft
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время
Стать образовательным партнёром
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время.
Заявка на консультацию
Оставьте свои контакты, и наш менеджер свяжется с Вами в ближайшее время.
Подписка
Спасибо!
Ваша заявка принята.
Спасибо!
Ваша заявка принята.
Наш сотрудник свяжется с вами в течение 1-2 рабочих дней.
Внимание!
Обнаружена ошибка.
Внимание!
Обнаружена ошибка.
Вы подписаны на новостную рассылку от BPMSoft.
Вы подписаны на новостную рассылку от BPMSoft.
MAX Подписаться
Уважаемые клиенты! Предупреждаем о случаях недобросовестной конкуренции и мошенничестве в сети Интернет.
Подробнее