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

Глоссарий

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

Архитектура

Внимание: данное руководство содержит инструкцию только по настройке решения на одном сервере.
Bpium Docker состоит из независимых контейнеров Docker:
  • Bpium — сервер приложения и логики
  • Bpium S3 — сервер файлового хранилища
  • Bpium BPM — сервер исполнения бизнес-процессов
  • PostgreSQL — сервер баз данных
  • Redis— сервер хранилища данных для бизнес-процессов
Контейнеры могут быть размещены на одном или разных серверах, включая кластерные решения. Реализация на нескольких серверах аналогична этой и так же потребует индивидуальной настройки.
Если у вас уже есть базы данных и хотите использовать их - это потребует дополнительной настройки файла конфигурации.
Готовая конфигурация включает:
  • Операционная система (Alpine)
    • Docker
      • Контейнер Bpium
      • Контейнер BPM
      • Контейнер Bpium-S3
      • Контейнер Postgres
      • Контейнер Redis
    • База данных Postgres:
    • База данных Redis
    • Хранилище Bpium-S3
Сеть устроена следующим образом:
  • Контейнеры объединены в одну сеть, имея доступ к друг другу.
  • Доступ во внешнюю сеть (интернет) имеют все контейнеры.
  • Обслуживать запросы, приходящие на хост могут только те контейнеры, которым это разрешили правилами.

Подготовка

Пример файла docker-compose

1
version: "3.8"
2
volumes:
3
storagebpium:
4
redisstorage:
5
postgresstorage:
6
services:
7
bpium:
8
container_name: bpium
9
image: bpiumdocker/bpium
10
ports:
11
- "80:80"
12
- "443:443"
13
secrets:
14
- cert
15
- cert-key
16
environment:
17
SERIAL_NUMBER: ''
18
DB_CONNECTION_STRING: 'postgres://postgres:[email protected]:5432/bpium_database'
19
COOKIE_SECRET: ''
20
SCRIPTS_TOKEN_SECRET: ''
21
S3_HOST: 'внешнедоступный адрес сервера'
22
S3_KEY: ''
23
S3_SECRET: ''
24
BPM_HOST: 'bpm'
25
BPM_SECRET: ''
26
depends_on:
27
- postgres
28
- bpm
29
- bpium-s3
30
logging:
31
driver: "json-file"
32
options:
33
max-size: "200m"
34
max-file: "3"
35
36
postgres:
37
container_name: postgres
38
image: "postgres:alpine"
39
environment:
40
POSTGRES_USER: "postgres"
41
POSTGRES_PASSWORD: "password"
42
POSTGRES_DB: "bpium_database"
43
POSTGRES_INITDB_ARGS: "--locale=ru_RU"
44
PGDATA: "/postgresdb"
45
command: ["postgres", "-c", "log_statement=all", "-c", "log_destination=stderr"]
46
volumes:
47
- postgresstorage:/postgresdb
48
restart: unless-stopped
49
logging:
50
driver: "json-file"
51
options:
52
max-size: "200m"
53
max-file: "3"
54
55
bpm:
56
container_name: bpm
57
image: bpiumdocker/bpm
58
secrets:
59
- cert
60
- cert-key
61
environment:
62
BPM_SECRET: ''
63
BPM_QUEUE_HOST: 'redis'
64
BPM_QUEUE_LOCAL: 'false'
65
depends_on:
66
- redis
67
logging:
68
driver: "json-file"
69
options:
70
max-size: "200m"
71
max-file: "3"
72
73
bpium-s3:
74
container_name: bpium-s3
75
image: bpiumdocker/s3
76
ports:
77
- "2020:2020"
78
secrets:
79
- cert
80
- cert-key
81
environment:
82
S3_HOST: 'внешнедоступный адрес сервера'
83
S3_KEY: ''
84
S3_SECRET: ''
85
volumes:
86
- storagebpium:/opt/storage
87
logging:
88
driver: "json-file"
89
options:
90
max-size: "200m"
91
max-file: "3"
92
93
redis:
94
container_name: redis
95
image: "redis:alpine"
96
command: >
97
--appendonly yes
98
--appendfilename "redisdb.aof"
99
volumes:
100
- redisstorage:/data
101
restart: unless-stopped
102
logging:
103
driver: "json-file"
104
options:
105
max-size: "200m"
106
max-file: "3"
107
108
secrets:
109
cert:
110
file: ./cert
111
cert-key:
112
file: ./cert-key
Copied!

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 есть возможность связывать элементы файловой системы контейнера с файловой системой хоста. Это и позволяет сохранить данные баз данных. Чтобы получить список всех связанных элементов нужно ввести команду: docker volume ls.

Запуск

Процедура запуска контейнеров состоит всего из одного этапа - что является преимуществом контейнерного решения.
Прейдите в каталог с файлом docker-compose.yml и введите команды, если необходимо - с правами суперпользователя:docker-compose up -d Это запустит процесс разворачивания необходимых контейнеров согласно настройках в файле docker-compose.yml
Если все сделано верно - то Бипиум готов к работе. Убедимся что контейнеры запущены и работают исправно:docker ps.Если все хорошо - вы должны увидеть следующее:
Обратите внимание на статус контейнера. Up - свидетельствует о корректной работе.
Теперь ваш Бипиум должен быть доступен по доменному имени/адресу хоста. Сам вход в приложение описан здесь.

Обновление

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

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

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

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

Приложение Bpium самостоятельно не занимается резервированием данных. При необходимости, требуется индивидуальная настройка этих процессов.
PostgreSQL
Бэкап:
1
docker exec -i postgres_container_name pg_dump --username pg_username --password pg_password database_name > /path/bpium_dump
Copied!
  • 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 - указывает, куда будет сохранен дамп в системе хоста

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

1
docker exec -i postgres_container_name pg_restore --username pg_username --password pg_password database_name < /path/bpium_dump
Copied!
  • 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/
Last modified 1mo ago