跳到主要内容

快速开始

警告

快速开始仅用于快速启动 Benjamin 项目,如果你想要在生产中使用或是进行更多的自定义,请阅读 安装配置 页面。

本文将指引你快速启动一个 Benjamin 项目(及 DevTools),所需的外部依赖为 make、docker 与 docker-compose V2。

备注

注意,虽然该快速启动指引使用了 Docker,但是并没有使用 Docker 作为调度器,而仅仅是在 Docker 中启动了 Benjamin 项目。

编译运行模式

警告

注意,因 Benjamin 的复杂性,该模式仅用于体验,并不建议用于开发。另外,因为该模式每次都会去编译 Benjamin 的全部源代码,因此启动速度较慢,如你想使用稳定版,建议使用下方的 镜像运行模式

如果你拥有 Benjamin 项目源代码的访问权限,且想编译运行指定 commit,可在克隆项目后使用如下命令

make docker-build-preview

该命令会利用本地 Docker 启动 Benjamin API Server 及 DevTools

所启动的容器名固定为 benjamin-api

占用的端口如下:

  • 9812 端口用于 API Server 的访问
  • 9818 端口用于 DevTools 的访问

所需的文件路径如下:

  • ./data/pg 目录用于存储 PostgresQL 的持久化数据信息
  • ./data/benjamin 目录用于存储 Benjamin 的日志和调试文件等信息
  • ./data/benjamin-config.json 目录用于放置 Benjamin 的配置文件

暂时不支持自定义端口和文件路径,如需修改请直接修改 docker-compose.build-preview.yaml

启动完成后,可访问 Benjamin DevTools(http://localhost:9812)来使用。

如想使用 cli,可执行下面的命令来访问到 Benjamin CLI

docker exec -it benjamin-api bjm cli

镜像运行模式

如果你想使用稳定版本的 Benjamin,或无权访问 Benjamin 源代码仓库,或想避免编译,可使用镜像运行模式。

如想使用镜像运行,请使用下面的 docker-compose 配置。

备注

该 docker-compose 配置的镜像引用了 ${IMAGE} 环境变量,你可替换该值为你想使用的镜像(例如 10.0.81.34/benjamin/benjamin:stable,请注意该变量存在于多个位置,如不使用环境变量而是采用修改 docker-compose.yaml 文件的方式请保证替换时一致)。

Benjamin 的镜像策略可参考 Tag 策略 文档。 注:当前的自动化仅为 linux-amd64 构建了镜像,如需使用 linux-arm64 请采用 编译运行模式

docker-compose.yml
version: "3.9"
services:
api:
image: "${IMAGE}"
container_name: "benjamin-api"
command: bjm api
environment:
- "BJM_SCHEDULER=subprocess"
- "BJM_DB_DSN=postgres://benjamin:benjamin@pg:5432/benjamin"
- "BJM_QUEUE_DSN=internal://pg"
ports:
- "9812:9812"
labels:
- "com.tophant.benjamin.role=api-server"
- "com.tophant.benjamin.name=api-server"
- "com.tophant.benjamin.docker-scheduler=off"
volumes:
- type: bind
source: ${PWD}/data/benjamin-config.json
target: /etc/benjamin/config.json
read_only: true
- type: bind
source: ${PWD}/data
target: /data
expose:
- 9812
depends_on:
pg:
condition: service_healthy
pg:
image: "postgres:16"
environment:
- "POSTGRES_USER=benjamin"
- "POSTGRES_PASSWORD=benjamin"
- "POSTGRES_DB=benjamin"
expose:
- 5432
volumes:
- type: bind
source: ${PWD}/data/pg/data
target: /var/lib/postgresql/data
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U benjamin -d benjamin" ]
interval: 10s
timeout: 5s
retries: 5
devtools:
image: "${IMAGE}"
container_name: "benjamin-devtools"
environment:
- "BACKEND_HOST=benjamin-api:9812"
ports:
- "9818:3000"

首次运行时请创建 ./data/pg/data 目录和 ./data/benjamin-config.json 配置文件

mkdir -p ./data ./data/pg/data
[ -f ./data/benjamin-config.json ] || echo '{}' > ./data/benjamin-config.json

然后执行如下命令来启动

docker compose up --abort-on-container-exit --remove-orphans --pull missing

所启动的容器名固定为 benjamin-api

占用的端口如下:

  • 9812 端口用于 API Server 的访问
  • 9818 端口用于 DevTools 的访问

数据文件路径如下:

  • ./data/pg 目录用于存储 PostgresQL 的持久化数据信息
  • ./data/benjamin 目录用于存储 Benjamin 的日志和调试文件等信息
  • ./data/benjamin-config.json 目录用于放置 Benjamin 的配置文件

暂时不支持自定义端口和文件路径,如需修改请直接修改 docker-compose.build-preview.yaml

启动完成后,可访问 Benjamin DevTools(http://localhost:9812)来使用。

如想使用 cli,可执行下面的命令来访问到 Benjamin CLI

docker exec -it benjamin-api bjm cli