Bencher Self-Hosted
Bencher — это проект с открытым исходным кодом. Он доступен как SaaS, Bencher Cloud, а также как набор контейнерных образов для самостоятельного размещения:
- Сервер консоли Bencher
- API-сервер Bencher
Развертывание
Самый простой способ развернуть Bencher Self-Hosted - это использовать триптих подкоманд CLI bencher
:
bencher up
bencher 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.4.36
.--console-port <PORT>
Укажите номер порта для контейнера Console сервера. По умолчанию используется порт
3000
. Аналогично форме только с портом для опции--expose
дляdocker run
.--api-port <PORT>
Укажите номер порта для контейнера API-сервера. По умолчанию используется порт
61016
. Аналогично форме только с портом для параметра--expose
вdocker run
.--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 logs
bencher logs
Просмотр вывода из контейнеров Bencher в автономном режиме, если
bencher up
был выполнен с флагом--detach
. Это похоже на выполнение командыdocker compose logs
.bencher up [OPTIONS] [SERVICE]Сервис
Выберите контейнеры для запуска. Возможные варианты:
all
,api
иconsole
. По умолчанию выбраноall
. Похоже на аргументSERVICE
дляdocker compose logs
.Опции
--help
Выводит справку.
bencher down
bencher 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: - 61016:61016 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:61016 # 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:61016 depends_on: - bencher_api_compose
См. пример в справочнике Docker Compose для получения дополнительной информации.
HTTPS
Для настройки HTTPS можно использовать Bencher Self-Hosted за прокси с включенным HTTPS или использовать доменное имя с действительным SSL-сертификатом.
Host URL
При использовании Bencher Self-Hosted вам нужно будет установить опцию --host
на URL вашего API сервера Bencher для большинства подкоманд CLI bencher
.
Например, если вы используете подкоманду CLI bencher run
с API сервером Bencher по адресу https://api.bencher.example.com
, то вы можете написать что-то вроде этого:
bencher run \--host https://api.bencher.example.com \--project save-walter-white-1234abcd \--branch main \--testbed ci-runner \--adapter json \bencher mock
Резервные копии
Самый простой способ создать резервную копию вашего локального API-сервера Bencher - использовать
подкоманду CLI bencher server backup
.
Пользователь должен быть администратором на сервере, чтобы использовать эту подкоманду.
bencher server backup
bencher server backup
Резервное копирование базы данных сервера API.
Опции
--host <URL>
URL API-сервера Bencher Self-Hosted.
Например, https://api.bencher.example.com
.
--token <TOKEN>
Либо параметр --token
, либо переменная окружения BENCHER_API_TOKEN
должны быть установлены на действительный API токен. Если оба параметра указаны, опция --token
имеет приоритет над переменной окружения BENCHER_API_TOKEN
.
--compress
Сожмите резервную копию базы данных с помощью gzip
.
Эта операция выполняется первой.
--data-store <DATA_STORE>
Сохраните резервную копию базы данных в этом хранилище данных. Эта операция выполняется второй.
Поддерживаемые хранилища данных:
aws_s3
: Резервное копирование в AWS S3
Используйте раздел database.data_store
конфигурации серверного API,
чтобы настроить хранилище данных для вашего самоустановочного API-сервера Bencher.
--remove
Удалить локальную копию резервной копии базы данных. Эта операция выполняется третьей.
Восстановление после сбоя
Чтобы предотвратить потерю данных между резервными копиями, Bencher предлагает встроенное решение для восстановления после сбоя. Эта функция требует активной лицензии Bencher Plus.
Поддерживаемые схемы репликации:
file
: Репликация в локальный путь к файлуsftp
: Репликация через SFTPs3
: Репликация в любое совместимое с S3 хранилище блобовabs
: Репликация в Azure Blob Storagegcs
: Репликация в Google Cloud Storage
Используйте раздел plus.disaster_recovery
конфигурации API-сервера, чтобы настроить восстановление после сбоя для вашего самостоятельно хостируемого API-сервера Bencher.