Bencher Self-Hosted
Bencher — это проект с открытым исходным кодом. Он доступен как SaaS, Bencher Cloud, а также как набор контейнерных образов для самостоятельного размещения:
- Сервер консоли Bencher
- API-сервер Bencher
Развертывание
Самый простой способ развернуть Bencher Self-Hosted - это использовать триптих подкоманд CLI bencher:
bencher upbencher upСоздание и запуск контейнеров Bencher с самостоятелной хостингом. Это похоже на выполнение команды
docker compose up.bencher up [OPTIONS] [SERVICE]Сервис
Выберите контейнеры для запуска. Возможные варианты:
all,apiиconsole. По умолчанию выбираетсяall. Аналогично аргументуSERVICEдляdocker compose up.Опции
--detachЗапуск в отсоединённом режиме. Контейнеры будут запущены в фоновом режиме. Похоже на флаг
--detachдляdocker compose up.--pull <WHEN>Загрузка образов перед запуском. Возможные варианты:
always,missingиnever. По умолчанию выбран вариантalways. Аналогично опции--pullдляdocker compose up.--tag <TAG>Укажите тег образа для контейнеров. По умолчанию тег образа соответствует версии CLI
bencher. Самая последняя версия CLIbencher— этоv0.6.13.--console-port <PORT>Укажите номер порта для контейнера сервера Console. По умолчанию используется порт
3000. Аналогично форме, задающей только порт, у опции--exposeдляdocker run.Если вы укажете опцию
--console-port, вам также необходимо обновить конфигурацию API‑сервераconsole.url, чтобы она соответствовала новому порту, используя либо опцию--api-env, либо опцию--api-volume.--api-port <PORT>Укажите номер порта для контейнера сервера API. По умолчанию используется порт
6610. Эквивалентно форме указания только порта опции--exposeдляdocker run.Если вы указываете опцию
--api-port, вы также должны обновить переменную окружения Console ServerBENCHER_API_URL, чтобы она соответствовала новому порту, используя опцию--console-env.--console-env <KEY_VALUE>Передайте переменную окружения в контейнер сервера Console. Ожидаемый формат —
KEY=value. Это может быть полезно при работе с конфигурацией сервера Console. Аналогично опции--envдляdocker run.--api-env <KEY_VALUE>Передайте переменную окружения в контейнер сервера API. Ожидаемый формат -
KEY=value. Это может быть полезно при работе с конфигурацией API сервера. Аналогично опции--envдляdocker run.--console-volume <HOST_CONTAINER>Передайте том монтирования в контейнер сервера Console. Ожидаемый формат -
/host/path:/container/path. Это может быть полезно при работе с конфигурацией сервера Console. Аналогично опции--volumeдляdocker run.--api-volume <HOST_CONTAINER>Передайте том для монтирования в контейнер сервера API. Ожидаемый формат:
/host/path:/container/path. Это может быть полезно при работе с конфигурацией сервера API. Аналогично опции--volumeдляdocker run.--helpВыводит справку.
bencher logsbencher logsПросмотр вывода из контейнеров Bencher в автономном режиме, если
bencher upбыл выполнен с флагом--detach. Это похоже на выполнение командыdocker compose logs.bencher up [OPTIONS] [SERVICE]Сервис
Выберите контейнеры для запуска. Возможные варианты:
all,apiиconsole. По умолчанию выбраноall. Похоже на аргументSERVICEдляdocker compose logs.Опции
--helpВыводит справку.
bencher downbencher downОстановите и удалите контейнеры Bencher Self-Hosted, если
bencher upбыл выполнен с флагом--detach. Это похоже на выполнение командыdocker compose down.bencher down [OPTIONS] [SERVICE]Сервис
Выберите контейнеры для запуска. Возможные варианты:
all,apiиconsole. По умолчанию выбранall. Аналогично аргументуSERVICEдляdocker compose down.Опции
--helpВыводит справку.
См. справочник Bencher Compose для получения дополнительной информации.
В качестве альтернативы, вы можете просто использовать docker compose для организации контейнеров.
docker-compose.yml
services: bencher_api_compose: image: ghcr.io/bencherdev/bencher-api:latest container_name: bencher_api ports: - 6610:6610 volumes: # Mount the configuration directory - "./services/api/etc:/etc/bencher" # Mount the database directory - "./services/api/data:/var/lib/bencher/data" # environment: # Set configuration string or file path # - BENCHER_CONFIG= # - BENCHER_CONFIG_PATH=
bencher_console_compose: image: ghcr.io/bencherdev/bencher-console:latest container_name: bencher_console ports: - 3000:3000 environment: # Set the API URL to the localhost IPv4 address - BENCHER_API_URL=http://127.0.0.1:6610 # This is needed for Docker-to-Docker communication when using a local `BENCHER_API_URL` # Do not set this when using a remote `BENCHER_API_URL`, such as https://bencher.example.com - INTERNAL_API_URL=http://host.docker.internal:6610 depends_on: - bencher_api_composeСм. пример в справочнике Docker Compose для получения дополнительной информации.
URL API сервера
При использовании Bencher Self-Hosted,
вам нужно будет установить параметр --host
на URL вашего Bencher API сервера
для большинства подкоманд CLI bencher.
Например, если вы используете подкоманду CLI bencher run
с Bencher API сервером по адресу https://api.bencher.example.com,
то вы можете написать что-то вроде этого:
bencher run \--host https://api.bencher.example.com \--project project-abc4567-wxyz123456789 \--branch main \--testbed ci-runner \--adapter json \bencher mockЕсли вы запускаете сервер Bencher Console на другом хосте, чем Bencher API сервер,
вам также нужно будет установить переменную окружения BENCHER_API_URL
на сервере Bencher Console на удаленный URL для вашего Bencher API сервера.
Например, если вы используете подкоманду CLI bencher up
для запуска сервера Bencher Console с Bencher API сервером по адресу https://api.bencher.example.com,
тогда вам нужно будет установить параметр --console-env на удаленный URL следующим образом:
bencher up --console-env BENCHER_API_URL=https://api.bencher.example.com consoleHTTPS
Для настройки HTTPS можно использовать Bencher Self-Hosted за прокси с включенным HTTPS или использовать доменное имя с действительным SSL-сертификатом.
Восстановление после сбоя
Чтобы предотвратить потерю данных, Bencher предлагает встроенное решение для восстановления после сбоя. Эта функция требует активной лицензии Bencher Plus.
Поддерживаемые схемы репликации:
file: Репликация в локальный путь к файлуs3: Репликация в любое совместимое с S3 хранилище блобов
Используйте раздел plus.disaster_recovery конфигурации API-сервера, чтобы настроить восстановление после сбоя для вашего самостоятельно хостируемого API-сервера Bencher.