Bencher 自托管
Bencher 是 开源的。 它有 SaaS 版本,Bencher Cloud, 也可以作为一组可自托管的容器镜像使用:
部署
部署 Bencher 自托管的最简单方法是使用 bencher
CLI 子命令的三联屏:
bencher up
bencher up
创建并启动 Bencher 自托管容器。 这类似于运行
docker compose up
。bencher up [OPTIONS] [SERVICE]服务
选择要运行的容器。可能的选项有:
all
、api
和console
。默认选择all
。类似于docker compose up
的SERVICE
参数。选项
--detach
以分离模式运行。 容器将在后台运行。 类似于
docker compose up
的--detach
标志。--pull <WHEN>
在运行之前拉取镜像。 可能的选项有:
always
、missing
和never
。 默认情况下选择always
。 类似于docker compose up
的--pull
选项。--tag <TAG>
指定容器的镜像标签。 默认情况下,镜像标签与
bencher
CLI 版本匹配。 最新的bencher
CLI 版本是v0.4.36
。--console-port <PORT>
为控制台服务器容器指定一个端口号。 默认情况下,使用端口
3000
。 类似于docker run
的--expose
选项的仅端口形式。--api-port <PORT>
为 API 服务器容器指定一个端口号。 默认情况下,使用端口
61016
。 类似于docker run
的--expose
选项 的仅端口形式。--console-env <KEY_VALUE>
将环境变量传递给控制台服务器容器。预期格式为
KEY=value
。这在使用控制台服务器配置时很有用。类似于docker run
的--env
选项。--api-env <KEY_VALUE>
将环境变量传递给 API 服务器容器。 预期格式为
KEY=value
。 这在使用 API 服务器配置 时很有用。 类似于docker run
的--env
选项。--console-volume <HOST_CONTAINER>
将挂载卷传递给控制台服务器容器。 预期格式为
/host/path:/container/path
。 这在使用控制台服务器配置时可能很有用。 类似于docker run
的--volume
选项。--api-volume <HOST_CONTAINER>
将挂载卷传递给 API 服务器容器。 预期格式为
/host/path:/container/path
。 这在使用 API 服务器配置 时很有用。 类似于docker run
的--volume
选项。--help
打印帮助。
bencher logs
bencher logs
查看 Bencher 自托管容器的输出, 如果
bencher up
是与--detach
选项一起运行的。 这类似于运行docker compose logs
。bencher up [OPTIONS] [SERVICE]服务
选择要运行的容器。 可能的选择有:
all
、api
和console
。 默认选择是all
。 类似于docker compose logs
的SERVICE
参数。选项
--help
打印帮助。
bencher down
bencher down
停止并移除 Bencher 自托管的容器, 如果
bencher up
时使用了--detach
标志。 这类似于运行docker compose down
。bencher down [OPTIONS] [SERVICE]服务
选择要运行的容器。 可以选择的项有:
all
、api
和console
。 默认选择all
。 类似于docker compose down
的SERVICE
参数。选项
--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,可以使用启用 HTTPS 的代理来托管 Bencher 自托管,或者使用具有有效 SSL 证书的域名。
Host URL
在使用 Bencher 自托管时,您需要为大多数 bencher
CLI 子命令将 the --host
option 设置为您的 Bencher API 服务器的 URL。
例如,如果您使用 bencher run
CLI 子命令,并与 Bencher API 服务器(设为 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
备份
备份您的 Bencher 自托管 API 服务器的最简单方法是使用
bencher server backup
CLI 子命令。
用户必须是服务器上的管理员才能使用此子命令。
bencher server backup
bencher server backup
备份API服务器数据库。
选项
--host <URL>
Bencher 自托管 API 服务器的 URL。
例如,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
使用 API 服务器配置的database.data_store
部分来设置您的 Bencher 自托管 API 服务器的数据存储。
--remove
删除数据库备份的本地副本。 此操作位于第三步运行。
灾难恢复
为了防止备份之间的数据丢失,Bencher 提供了内置的灾难恢复解决方案。此功能需要有效的 Bencher Plus 许可证。
支持的复制方案:
file
:复制到本地文件路径sftp
:通过 SFTP 复制s3
:复制到任何兼容 S3 的对象存储abs
:复制到 Azure Blob 存储gcs
:复制到谷歌云存储
使用 API 服务器配置中的 plus.disaster_recovery
部分 为您的 Bencher 自托管 API 服务器设置灾难恢复。