Bencher 自托管


Bencher 是 开源的。 它有 SaaS 版本,Bencher Cloud, 也可以作为一组可自托管的容器镜像使用:

部署

部署 Bencher 自托管的最简单方法是使用 bencher CLI 子命令的三联屏:

  • bencher up

    bencher up

    创建并启动 Bencher 自托管容器。 这类似于运行 docker compose up

    bencher up [OPTIONS] [SERVICE]

    服务

    选择要运行的容器。可能的选项有:allapiconsole。默认选择 all。类似于 docker compose upSERVICE 参数。

    选项

    --detach

    以分离模式运行。 容器将在后台运行。 类似于docker compose up--detach 标志。

    --pull <WHEN>

    在运行之前拉取镜像。 可能的选项有:alwaysmissingnever。 默认情况下选择 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]

    服务

    选择要运行的容器。 可能的选择有:allapiconsole。 默认选择是 all。 类似于docker compose logsSERVICE 参数。

    选项

    --help

    打印帮助。

  • bencher down

    bencher down

    停止并移除 Bencher 自托管的容器, 如果 bencher up 时使用了 --detach 标志。 这类似于运行 docker compose down

    bencher down [OPTIONS] [SERVICE]

    服务

    选择要运行的容器。 可以选择的项有:allapiconsole。 默认选择all。 类似于 docker compose downSERVICE 参数。

    选项

    --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,那么您可以这样写:

Terminal window
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 选项 设置为远程网址,如下所示:

Terminal window
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 服务器设置灾难恢复。

🤖 该文档由 OpenAI GPT-4 自动生成。 它可能不准确并且可能包含错误。 如果您发现任何错误,请在 GitHub 上提出问题.


Published: Mon, October 14, 2024 at 6:20:00 AM UTC | Last Updated: Fri, March 21, 2025 at 7:30:00 PM UTC