快速开始
本文将指引你快速启动一个 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.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