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

Обновлено и опубликовано Опубликовано:

Используемые термины: ReportportalDocker, 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.

# DevOps # Linux # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет