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.

EnglishRussianUkrainian