Установка как Docker контейнер

Bpium Docker — это версия Bpium для установки на собственные сервера или облако. Решение включает в себя конфигурационные файлы для создания собственного сервера с технологией контейнеризации.

Глоссарий

  • Хост - операционная система, на которой запущены контейнеры Docker

  • Docker - программное обеспечение, реализующее контейнерную изоляцию приложений

  • Контейнеризация - метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя вместо одного. Эти экземпляры (обычно называемые контейнерами или зонами) с точки зрения пользователя полностью идентичны отдельному экземпляру операционной системы.

Архитектура

Внимание: данное руководство содержит инструкцию только по настройке решения на одном сервере.

Bpium Docker состоит из независимых контейнеров Docker:

  • Bpium — сервер приложения и логики

  • Bpium S3 — сервер файлового хранилища

  • Bpium BPM — сервер исполнения бизнес-процессов

  • PostgreSQL — сервер баз данных

  • Redis— сервер хранилища данных для бизнес-процессов

Контейнеры могут быть размещены на одном или разных серверах, включая кластерные решения. Реализация на нескольких серверах аналогична этой и так же потребует индивидуальной настройки.

Если у вас уже есть базы данных и хотите использовать их - это потребует дополнительной настройки файла конфигурации.

Готовая конфигурация включает:

  • Операционная система (Ubuntu)

    • Docker

      • Контейнер Bpium

      • Контейнер BPM

      • Контейнер Bpium-S3

      • Контейнер Postgres

      • Контейнер Redis

    • База данных Postgres:

    • База данных Redis

    • Хранилище Bpium-S3

Сеть устроена следующим образом:

  • Контейнеры объединены в одну сеть, имея доступ к друг другу.

  • Доступ во внешнюю сеть(интернет) имеют все контейнеры.

  • Обслуживать запросы, приходящие на хост могут только те контейнеры, которым это разрешили правилами.

Требования

Минимальные требования к серверу:

  • Процессор: 2 ГГц (рекомендуется Intel i5/i7, 3+ ГГц)

  • Память: 2 Гб (рекомендуется от 4 Gb)

  • Диск: 20 Гб свободного места

  • Локальная сеть: 100 Мб/c

  • Доступ в интернет: периодически, для активации лицензий

  • Для работы модуля телефонии: внешний IP-адрес, домен, сертификат HTTPS

Операционная система

Bpium Docker — решение для операционных систем семейства Linux. Рекомендованный дистрибутив - Ubuntu Linux.

Подготовка

Проект доступен для скачивания по ссылке:

SSL-сертификаты

Bpium может работать на защищенном канале связи (HTTPS). Для этого сервер приложения должен быть доступен из интернета, иметь доменное имя и SSL-сертификат Class 1 или более высокий. Для работы мультидоменной версии Bpium требуется wildcard-сертификат Class 2 или более высокий.

Способы размещения сертификата:

  • По-умолчанию: Положите сертификат(.crt) и ключ сертификата в одну директорию с docker-compose.yml и назовите их cert и cert-key соответственно.

  • Свой: Нужно поменять пути для сертификата и ключа в файле docker-compose.yml: secrets: cert: file: ./cert cert-key: file: ./cert-key

Настройка конфигурационного файла (docker-compose.yml)

Настройки Бипиума хранятся отдельно для каждого контейнера и указаны в секции environments, в формате:

HTTPS: 'true' SERIAL_NUMBER:'0000-0000-0000-0000' COOKIE_SECRET:'somestring' SCRIPTS_TOKEN_SECRET: 'anotherstring'

Учтите: если ваша конфигурация состоит из нескольких серверов - вам потребуются дополнительные настройки.

Список с описанием всех переменных вы можете найти по этим ссылкам: Bpium BPM S3

Хранение статичных данных или Persist storage

Одна из особенностей контейнерных технологий - отсутствие следов. Если контейнер выйдет из строя или будет перезапущен, то все внутри данные контейнера будут утеряны. Это является проблемой, если в контейнере содержится база данных. Для этого случая в Docker есть возможность связывать элементы файловой системы контейнера с файловой системой хоста. Это и позволяет сохранить данные баз данных. В проекте это реализовано следующим образом:

  • База данных Redis хранится по пути: /home/bpium_data/redis/appendonly.aof

  • База данных и настройки Postgres хранится по пути: /home/bpium_data/postgres/

Запуск

Процедура запуска контейнеров состоит всего из одного этапа - что является преимуществом контейнерного решения.

Введите команды, если необходимо - с правами суперпользователя:docker-compose up -d Это запустит процесс разворачивания необходимых контейнеров согласно настройках в файле docker-compose.yml

Вуаля! Если все сделано верно - то Бипиум готов к работе. Убедимся что контейнеры запущены и работают исправно:docker ps

Если все хорошо - вы должны увидеть следующее:

Обратите внимание на статус контейнера. Up - свидетельствует о корректной работе.

Теперь ваш Бипиум должен быть доступен по доменному имени/адресу хоста. Сам вход в приложение описан здесь.

Обновление

Данный раздел находится в разработке.

Для обновления приложения Бипиума до последней версии нужно выполнить команду: docker pull bpium:latest && docker pull bpm:latest && docker pull bpium-s3:latest Это запустит процесс синхронизации с хранилищем образов и загрузит самые новые. Вы так же можете указать конкретную версию, к примеру: bpium:1.6.6 Вам нужно перезапустить контейнеры, чтобы Docker использовал новые образы: docker-compose up -d

Ваш Бипиум обновлен!

Получение логов

Для диагностики и изучения возможных проблем с Бипиумом вы можете использовать логирование Docker.

Сначала, нужно узнать имя интересующего вас контейнера. Для этого введите команду:docker ps -a Вам будут показаны все контейнеры, включая неработающие.

Для доступа к логам контейнера достаточно ввести следующую команду: docker logs имя_контейнера

Бэкапы, миграции и восстановление

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

PostgreSQL
PostgreSQL

Бэкап:

docker exec -i postgres_container_name pg_dump --username pg_username --password pg_password database_name > /path/bpium_dump
  • docker exec -i postgres_container_name - исполняет команду внутри контейнера в интерактивном режиме

  • pg_dump - утилита для создания бекап-файла данных

  • --username pg_username - имя пользователя базы данных (по-умолчанию postgres)

  • --password pg_password - пароль пользователя базы данных (см. docker-compose.yml)

  • database_name - имя базы данных (по-умолчанию bpium_database)

  • /path/bpium_dump - указывает, куда будет сохранен дамп в системе хоста

Восстановление:

docker exec -i postgres_container_name pg_restore --username pg_username --password pg_password database_name < /path/bpium_dump
  • docker exec -i postgres_container_name - исполняет команду внутри контейнера в интерактивном режиме

  • pg_restore - утилита для восстановления данных из бекап-файла

  • --username pg_username - имя пользователя базы данных (по-умолчанию postgres)

  • --password pg_password - пароль пользователя базы данных (см. docker-compose.yml)

  • database_name - имя базы данных (по-умолчанию bpium_database)

  • /path/bpium_dump - указывает, из какого дампа будет восстановлена база

Миграция:

Достаточно переместить директорию с базой и запустить контейнер с базой. К примеру, нам нужно переместить на другой диск: mv /home/bpium_data/postgres /mnt/sdb1/