Docker部署Apache Hop Server后,如何用REST API启动工作流?
解决Apache Hop Docker容器REST API启动工作流找不到文件的问题
1. 确保Docker容器正确启动Hop Server
默认apache/hop:2.6.0镜像启动后进入交互CLI,需显式启动Hop Server并加载你的项目。使用以下启动命令:
docker run -d -p 8080:8080 \ -v /本地项目绝对路径:/files/test \ -e HOP_PROJECT_NAME="test-docker" \ -e HOP_PROJECT_FOLDER="/files/test" \ -e HOP_SERVER_USER="cluster" \ -e HOP_SERVER_PASSWORD="cluster" \ apache/hop:2.6.0 hop server start --host 0.0.0.0 --port 8080
- 替换
/本地项目绝对路径为你本地项目根目录的真实路径 - 环境变量
HOP_SERVER_USER和HOP_SERVER_PASSWORD是Hop Server默认的认证凭据,可按需修改
2. 验证项目是否成功加载
发送GET请求到Hop Server的项目列表接口,确认你的项目已被加载:
GET http://localhost:8080/hop/api/projects
请求需携带Basic Auth(用户名cluster,密码cluster)。返回结果中若包含"name": "test-docker"的项目条目,说明项目加载正常。
3. 正确调用REST API启动工作流
发送POST请求到工作流运行接口,请求体指定项目名称和工作流相对路径:
POST http://localhost:8080/hop/api/workflow/run
请求头设置Content-Type: application/json,并携带Basic Auth。请求体内容如下:
{ "projectName": "test-docker", "workflowPath": "main.hwf", "parameters": {}, "runConfig": "local" }
workflowPath填写工作流文件相对于项目根目录的路径(你的main.hwf直接在项目根,所以写main.hwf即可)- 若工作流需要参数,在
parameters对象中添加键值对
常见问题排查
- 目录权限问题:确保本地挂载目录的权限允许容器内用户读取,可通过
docker exec <容器ID> ls -l /files/test检查文件是否存在且可访问 - 项目配置一致性:确认
/files/test/project-config.json中的name字段为test-docker,project-folder字段为/files/test,与环境变量完全匹配 - 工作流内部路径:若
main.hwf引用了create_rows.hpl,确保工作流中使用的是相对项目根的路径(如${PROJECT_HOME}/create_rows.hpl),避免硬编码绝对路径
内容的提问来源于stack exchange,提问作者DanyUP
相关产品推荐
相关产品推荐

