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.5.0
。--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 参考示例。
API 服务器网址
在使用 Bencher 自托管版本时,您需要为大多数 bencher
CLI 子命令将 --host
选项 设置为您的 Bencher API 服务器的网址。
例如,如果您使用 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 控制台服务器和 Bencher API 服务器,您还需要在 Bencher 控制台服务器上设置 BENCHER_API_URL
环境变量 指向 Bencher API 服务器的远程网址。
例如,如果您使用 bencher up
CLI 子命令启动 Bencher 控制台服务器,而 Bencher API 服务器运行在 https://api.bencher.example.com
上,那么您需要将 --console-env
选项 设置为远程网址,如下所示:
bencher up --console-env BENCHER_API_URL=https://api.bencher.example.com console
HTTPS
为了设置 HTTPS,可以使用启用 HTTPS 的代理来托管 Bencher 自托管,或者使用具有有效 SSL 证书的域名。
备份
备份您的 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 服务器设置灾难恢复。