Reportportal — развертывание в Docker

Используемые термины: Reportportal, Docker, Linux.
Рассмотрим процесс развертывания портала для выполнения тестов в соответствии с методологией TestOps. Запуск приложения Reportportal будет выполняться в среде Docker. Предполагается, что используется операционная система на базе Linux, но с небольшими изменениями можно выполнить установку на Windows.
Установка Docker
В нашей системе мы должны установить:
- docker engine.
- docker-compose.
В зависимости от типа Linux, действия будут отличаться. Подробнее, процесс установки необходимого программного обеспечения для различных систем описан в инструкции Установка Docker на Linux.
Запуск Reportportal
В гитхабе разработчика представлен готовый docker-compose файл. Его мы можем использовать для развертывания сервиса. Рассмотрим процесс подробнее.
Создаем каталог, в котором разместим файлы приложения:
mkdir /opt/reportportal
Перейдем в него:
cd /opt/reportportal
Скачаем docker-compose файл от разработчика:
curl -s https://raw.githubusercontent.com/reportportal/reportportal/refs/heads/master/docker-compose.yml -o ./docker-compose.yml
Создаем файл с переменными:
vi .env
POSTGRES_USER=rpuser
POSTGRES_PASSWORD=rppass
POSTGRES_DB=reportportal
RABBITMQ_DEFAULT_USER=rabbitmq
RABBITMQ_DEFAULT_PASS=rabbitmq
RP_INITIAL_ADMIN_PASSWORD=erebus
* где:
- POSTGRES_* — данные для подключения к базе данных PostgreSQL. Соответственно, пользователь, пароль, имя базы.
- RABBITMQ_* — логин и пароль для подключения к брокеру rabbitmq.
- RP_INITIAL_ADMIN_PASSWORD — начальный пароль для входа на Reportportal.
Запускаем контейнеры:
docker-compose up -d
Посмотреть их состояние можно командой:
docker-compose ps
Состояние healthcheck у многих контейнеров должно быть starting:
... (health: starting)
Мы должны дождаться полного окончания запуска. Состояние healthcheck должно стать:
(healthy)
После открываем браузер и переходим по адресу http://<IP-адрес сервера>:8080/ — должна открыться стартовая страница Reportportal.
Вводим данные для входа — superadmin / erebus (пароль мы задавали в файле .env).
SSL
Выше было описано, как запустить приложение через http. Внесем некоторые изменения в конфигурацию, чтобы портал работал по https.
Переходим в каталог:
cd /opt/reportportal
Создаем папки:
mkdir -p ./traefik/certs ./traefik/conf
* каталог certs для хранения сертификатов; conf — дополнительных файлов конфигурации.
Создаем конфигурационный файл:
vi ./traefik/conf/certs-traefik.yaml
tls:
stores:
default:
defaultCertificate:
certFile: /etc/certs/cert.crt
keyFile: /etc/certs/cert.key
certificates:
- stores: default
* в данном примере мы указали конфигурацию для TLS.
В каталог traefik/certs копируем файлы сертификатов с именами:
- cert.crt — файл открытого ключа.
- cert.key — закрытый ключ.
Сам сертификат можно купить или получить бесплатно от сертификационного центра Let's Encrypt.
Отредактируем файл docker-compose:
vi docker-compose.yml
Для сервиса gateway меняем внешний порт на 80 и добавляем порт 443, добавляем файлы сертификатов, которые будут проброшены в контейнер и добавляем опции к команде (изменения указаны желтым):
gateway:
...
ports:
...
- 80:8080
- 443:443
volumes:
...
- ./traefik/conf/certs-traefik.yaml:/etc/traefik/dynamic/certs-traefik.yaml
- ./traefik/certs:/etc/certs/
command:
...
- --providers.file.directory=/etc/traefik/dynamic
- --entrypoints.websecure.address=:443
- --providers.file.watch=true
* данными настройками мы указали, что контейнер помимо порта http должен слушать на порту https; мы добавили динамический файл конфигурации (в котором указали пути до сертификатов); также мы указали приложению запускаться с дополнительными опциями, благодаря которым будет читаться динамический конфигурационный файл и приложение будет также стартовать с прослушиванием порта https (443).
Для остальных сервисов обязательно, добавляем опцию в разделе labels:
index:
...
labels:
...
- "traefik.http.routers.index.tls=true"
ui:
...
labels:
...
- "traefik.http.routers.ui.tls=true"
api:
...
labels:
...
- "traefik.http.routers.api.tls=true"
uat:
...
labels:
...
- "traefik.http.routers.uat.tls=true"
* данный лейбл говорит сервису, что используется безопасное соединение TLS.
Перезапускаем контейнеры командой:
docker-compose up -d
Смотрим на их состояние:
docker-compose ps
Сначала мы должны увидеть health: starting:
... (health: starting)
Спустя некоторое время данный статус должен поменять на healthy:
(healthy)
Снова открываем браузер и переходим уже по адресу https://<IP-адрес сервера>/ — должна открыться уже известная нам страница Reportportal.