Готовые образы Docker

Docker - средство для контейнеризации (виртуализации на уровне операционной системы) приложений. Идеология Docker такова, что отдельное приложение должно быть в отдельном контейнере, соответственно обычно и в отдельном образе (например, база данных в одном контейнере, activeMQ в другом, приложение, работающее с ними - в третьем); но разрешает исключения, когда сразу несколько приложений одного сервиса запущены в одном контейнере. Для обновления приложения Вам нужно обновить образ, но образ должен быть устроен таким образом, чтобы минимизировать последующую настройку. Данные, которые должны сохраняться после удаления контейнера или обновления образа, располагаются на машине-хосте и подключены к контейнеру через mount. У каждого контейнера свой IP-адрес.

Данная инсталляция является стеком контейнеров (каждое приложение - в отдельном контейнере), стек управляется через подсистему Docker Swarm.

Представленные образы предназначены для первого знакомства с биллингом, демонстрации и/или тестирования, в них предустановлен полнофункциональный BGBilling с тестовой лицензией, ограничение лишь в максимальном количестве используемых договоров. В демо-образах заполнены некоторые данные ядра и модулей, в чистом образе - чистая установка биллинга.

Установка Docker

Установка Docker описана здесь: https://docs.docker.com/install/linux/docker-ce/debian/, слева выберите Вашу операционную систему. Также можете воспользоваться shell-скриптом с https://get.docker.com:

[root@localhost ~]#
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh

Установка стека

По умолчанию команды Docker необходимо выполнять через sudo, т.к. он работает через Unix-socket. Если вам не нравится данный подход, то здесь описано как настроить Docker без sudo: https://docs.docker.com/install/linux/linux-postinstall/.

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

[root@localhost ~]#
cd /opt

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

[root@localhost ~]#
docker pull bgbilling/stack-demo:7.2
docker run --name tmp-bgbilling-docker -d bgbilling/stack-demo:7.2
docker cp tmp-bgbilling-docker:/bgbilling-docker . && docker rm -f tmp-bgbilling-docker

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

[root@localhost ~]#
docker pull bgbilling/stack-empty:7.2
docker run --name tmp-bgbilling-docker -d bgbilling/stack-empty:7.2
docker cp tmp-bgbilling-docker:/bgbilling-docker . && docker rm -f tmp-bgbilling-docker

Данные команды скачают мини-образ bgbilling/stack-demo (или bgbilling/stack-empty), сделают из него временный контейнер, скопируют содержимое контейнера и удалят контейнер. В текущей папке появится папка bgbilling-docker с подпапками и файлами конфигурации.

Далее инициализируйте подсистему Docker Swarm:

[root@localhost ~]#
docker swarm init

И запустите стек:

[root@localhost ~]#
./bgbilling-docker/init.sh

Будут скачены и запущены образы MySQL, ActiveMQ, биллинга и личного кабинета. Здесь возможно понадобится немного подождать. По окончании работы скрипта сервер биллинга будет доступен по URL http://127.0.0.1:8080/bgbilling/executer, личный кабинет - по http://127.0.0.1:8081/my/index.xhtml. Как запустить клиент, чтобы подключиться к серверу биллинга описано здесь, логин/пароль: admin/admin.

Подробнее про стек

Конфигурационный файл стека, который указывает Docker Swarm что и как запускать - bgbilling-docker/docker-stack.yml. В нем:

  • services - запускаемые сервисы: db, activemq, server, scheduler, my;

  • image - имя образа (из https://hub.docker.com/ или локальный);

  • environment - системные переменные;

  • ports - какие порты открывать на машине-хосте;

  • networks - используемые сети (одна, внутренняя);

  • volumes - точки монтирования (папки/файлы из bgbilling-docker монтируются к папкам/файлам внутри контейнеров).

В bgbilling-docker/mysql/my.cnf - конфигурация БД, в bgbilling-docker/mysql/data хранятся данные БД. В директории bgbilling-docker/server/log содержатся логи сервера биллинга и планировщика.

Чтобы остановить все приложения стека выполните bgbilling-docker/stop.sh, чтобы запустить: bgbilling-docker/start.sh. Чтобы остановить и удалить контейнеры стека выполните bgbilling-docker/destroy.sh.