构建和运行 hatchet-api
前提条件
-
安装 Go(如果尚未安装)
-
安装 Node.js(用于 nodemon)
-
启动依赖的服务(postgres、RabbitMQ)
可以用https://gitee.com/zhenleo/hatchet-demo中docker-compose启动docker-compose up -d postgres rabbitmq
快速启动(开发环境)
使用任务运行器(推荐):
bash
# 启动数据库和 API
task start-api
直接使用启动脚本:
bash
# 启动 Caddy 并运行带热重载的 API
bash hack/dev/start-api.sh
在vs code中debug hatchet-api
在 launch.json 中添加新配置
yaml
"configurations": [
{
"name": "Launch hatchet-api",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}/cmd/hatchet-api",
"env": {
"PATH": "/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOROOT": "/usr/local/go"
},
"args": [ "--config=./config"],
"dlvToolPath": "/home/test/go/bin/dlv",
"showGoStatus": true,
"cwd": "${workspaceFolder}/"
}
]
手动构建和运行
构建二进制文件:
bash
go build -o cmd/hatchet-api/hatchet-api ./cmd/hatchet-api
运行已构建的二进制文件:
bash
./cmd/hatchet-api/hatchet-api --config ./config
直接使用 Go 运行:
bash
go run ./cmd/hatchet-api --config ./config
./config 是通过 docker-compose 中的 setup-config 生成的。
需要修改的配置选项
config/server.yaml 中 url
在 config/server.yaml 文件中,修改与消息队列相关的配置项:
yaml
logger:
format: console
level: debug // API服务的日志级别
msgQueue:
enabled: true
kind: rabbitmq
rabbitmq:
url: amqp://user:password@rabbitmq:5672/ # 修改为 RabbitMQ 的连接 URL
config/database.yaml 配置 PostgreSQL
在 config/database.yaml 文件中,修改 PostgreSQL 相关配置项:
yaml
host: 127.0.0.1 # 修改为 PostgreSQL 服务器的主机地址
password: hatchet # 设置 PostgreSQL 数据库密码
port: 5431 # 修改为 PostgreSQL 连接端口
使用task配置
任务定义在 hatchet/Taskfile.yaml
该 API 需要一个 .env 文件来进行配置。可以通过以下命令生成:
bash
# 设置环境变量
task set-env-all
这将创建一个 .env 文件,包含以下设置:
• 数据库 URL(PostgreSQL)
• JWT 加密密钥
• 服务器端口(默认:8080)
• 消息队列(RabbitMQ)
• 日志配置
完整的开发环境设置
为了搭建完整的开发环境:
bash
# 初始设置(一次性)
task setup
# 启动所有服务(API、引擎、前端、数据库)
task start-dev
可用命令
• task start-api - 启动带热重载的 API
• task start-engine - 启动任务引擎
• task start-frontend - 启动前端 UI
• task start-dev - 启动所有服务
• task start-db - 通过 Docker 启动 PostgreSQL 和 RabbitMQ
• task migrate - 执行数据库迁移
API 通常可以通过 http://localhost:8080 访问。