🛳️ Установка через Docker
КОСКО BPM Docker — это версия КОСКО BPMдля установки на собственные сервера или облако.
Решение включает в себя конфигурационные файлы для создания собственного сервера с технологией контейнеризации.
Глоссарий
Хост - операционная система, на которой запущены контейнеры Docker
Docker - программное обеспечение, реализующее контейнерную изоляцию приложений
Контейнеризация - метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя вместо одного. Эти экземпляры (обычно называемые контейнерами или зонами) с точки зрения пользователя полностью идентичны отдельному экземпляру операционной системы.
Архитектура
Внимание: данное руководство содержит инструкцию только по настройке решения на одном сервере.
КОСКО BPM Docker состоит из независимых контейнеров Docker:
COSCO BPM— сервер приложения и логики
COSCO BPM S3 — сервер файлового хранилища
COSCO BPM — сервер исполнения бизнес-процессов
PostgreSQL — сервер баз данных
Redis— сервер хранилища данных для бизнес-процессов
Контейнеры могут быть размещены на одном или разных серверах, включая кластерные решения. Реализация на нескольких серверах аналогична этой и так же потребует индивидуальной настройки.
Если у вас уже есть базы данных и хотите использовать их - это потребует дополнительной настройки файла конфигурации.
Готовая конфигурация включает:
Операционная система (Alpine)
Docker
Контейнер
Контейнер BPM
Контейнер COSCO BPM-S3
Контейнер Postgres
Контейнер Redis
База данных Postgres:
База данных Redis
Хранилище COSCO BPM-S3
Сеть устроена следующим образом:
Контейнеры объединены в одну сеть, имея доступ к друг другу.
Доступ во внешнюю сеть (интернет) имеют все контейнеры.
Обслуживать запросы, приходящие на хост могут только те контейнеры, которым это разрешили правилами.
Подготовка
Пример файла docker-compose
version: "3.8" volumes: storageIsup: redisstorage: postgresstorage: services: Isup: container_name: Isup image: Isupdocker/Isup ports: - "80:80" - "443:443" secrets: - cert - cert-key environment: SERIAL_NUMBER: '' DB_CONNECTION_STRING: 'postgres://postgres:password@postgres:5432/Isup_database' COOKIE_SECRET: '' SCRIPTS_TOKEN_SECRET: '' S3_HOST: 'внешнедоступный адрес сервера' S3_KEY: '' S3_SECRET: '' BPM_HOST: 'bpm' BPM_SECRET: '' depends_on: - postgres - bpm - Isup-s3 logging: driver: "json-file" options: max-size: "200m" max-file: "3" postgres: container_name: postgres image: "postgres:alpine" environment: POSTGRES_USER: "postgres" POSTGRES_PASSWORD: "password" POSTGRES_DB: "Isup_database" POSTGRES_INITDB_ARGS: "--locale=ru_RU" PGDATA: "/postgresdb" command: ["postgres", "-c", "log_statement=all", "-c", "log_destination=stderr"] volumes: - postgresstorage:/postgresdb restart: unless-stopped logging: driver: "json-file" options: max-size: "200m" max-file: "3" bpm: container_name: bpm image: Isupdocker/bpm secrets: - cert - cert-key environment: BPM_SECRET: '' BPM_QUEUE_HOST: 'redis' BPM_QUEUE_LOCAL: 'false' depends_on: - redis logging: driver: "json-file" options: max-size: "200m" max-file: "3" Isup-s3: container_name: Isup-s3 image: Isupdocker/s3 ports: - "2020:2020" secrets: - cert - cert-key environment: S3_HOST: 'внешнедоступный адрес сервера' S3_KEY: '' S3_SECRET: '' volumes: - storageIsup:/Isuppac/storage logging: driver: "json-file" options: max-size: "200m" max-file: "3" redis: container_name: redis image: "redis:alpine" command: > --appendonly yes --appendfilename "redisdb.aof" volumes: - redisstorage:/data restart: unless-stopped logging: driver: "json-file" options: max-size: "200m" max-file: "3" secrets: cert: file: ./cert cert-key: file: ./cert-key
SSL-сертификаты
КОСКО BPM может работать на защищенном канале связи (HTTPS).
Для этого сервер приложения должен быть доступен из интернета, иметь доменное имя и SSL-сертификат Class 1 или более высокий.
Для работы мультидоменной версии КОСКО BPM требуется wildcard-сертификат Class 2 или более высокий.
Способы размещения сертификата:
По-умолчанию:
Положите сертификат (.crt) и ключ сертификата в одну директорию с docker-compose.yml и назовите ихcertиcert-keyсоответственно.Свой:
Нужно поменять пути для сертификата и ключа в файле docker-compose.yml:secrets:cert:file: ./certcert-key:file: ./cert-key
Настройка конфигурационного файла (docker-compose.yml)
Настройки КОСКО BPM хранятся отдельно для каждого контейнера и указаны в секции environments, в формате:
HTTPS: 'true'SERIAL_NUMBER:'0000-0000-0000-0000'COOKIE_SECRET:'somestring'SCRIPTS_TOKEN_SECRET: 'anotherstring'
Учтите: если ваша конфигурация состоит из нескольких серверов - вам потребуются дополнительные настройки.
Список с описанием всех переменных вы можете найти по этим ссылкам:
КОСКО BPM
BPM
S3
Хранение статичных данных или Persist storage
Одним из минусов контейнеров является то что данные существуют только пока работает контейнер. Это является проблемой, если в контейнере содержится база данных. Для этого случая в Docker есть возможность связывать элементы файловой системы контейнера с файловой системой хоста. Это и позволяет сохранить данные баз данных. Чтобы получить список всех связанных элементов нужно ввести команду: docker volume ls.
Запуск
Процедура запуска контейнеров состоит всего из одного этапа - что является преимуществом контейнерного решения.
Прейдите в каталог с файлом docker-compose.yml и введите команды, если необходимо - с правами суперпользователя:docker-compose up -d
Это запустит процесс разворачивания необходимых контейнеров согласно настройках в файле docker-compose.yml
Если все сделано верно - то КОСКО BPM готов к работе. Убедимся что контейнеры запущены и работают исправно:docker ps.Если все хорошо - вы должны увидеть следующее:
Теперь ваш КОСКО BPM должен быть доступен по доменному имени/адресу хоста.
Сам вход в приложение описан здесь.
Обновление
Для обновления приложения КОСКО BPM до последней версии нужно выполнить команду:
docker pull isupdocker/isup:latest && docker pull coscodocker/bpm:latest && docker pull isupdocker/s3:latest
Это запустит процесс синхронизации с хранилищем образов и загрузит самые новые.
После этого нужно перезапустить контейнеры, чтобы Docker использовал новые образы:
docker-compose up -d
Получение логов
Для диагностики и изучения возможных проблем с КОСКО BPM вы можете использовать логирование Docker.
Сначала, нужно узнать имя интересующего вас контейнера.
Для этого введите команду:
docker ps
Вам будут показаны все контейнеры, включая неработающие.
Для доступа к логам контейнера достаточно ввести следующую команду:
docker logs имя_контейнера
Бэкапы, миграции и восстановление
Приложение КОСКО BPM самостоятельно не занимается резервированием данных.
При необходимости, требуется индивидуальная настройка этих процессов.
Бэкап:
docker exec -i postgres_container_name pg_dump --username pg_username --password pg_password database_name > /path/Isup_dump
docker exec -i postgres_container_name- исполняет команду внутри контейнера в интерактивном режимеpg_dump- утилита для создания бекап-файла данных--username pg_username- имя пользователя базы данных (по-умолчаниюpostgres)--password pg_password- пароль пользователя базы данных (см. docker-compose.yml)database_name- имя базы данных (по-умолчаниюIsup_database)/path/Isup_dump- указывает, куда будет сохранен дамп в системе хоста
Восстановление:
docker exec -i postgres_container_name pg_restore --username pg_username --password pg_password database_name < /path/Isup_dump
docker exec -i postgres_container_name- исполняет команду внутри контейнера в интерактивном режимеpg_restore- утилита для восстановления данных из бекап-файла--username pg_username- имя пользователя базы данных (по-умолчаниюpostgres)--password pg_password- пароль пользователя базы данных (см. docker-compose.yml)database_name- имя базы данных (по-умолчаниюisup_database)/path/Isup_dump- указывает, из какого дампа будет восстановлена база
Миграция:
Достаточно переместить директорию с базой и запустить контейнер с базой.
К примеру, нам нужно переместить на другой диск:mv /home/isup_data/postgres /mnt/sdb1/