如何在Docker Compose中为Krakend执行多条命令(含OpenAPI导出)
在Docker Compose中同时启动Krakend并执行OpenAPI导出命令
方案一:使用自定义启动脚本
- 在本地
./krakend目录下创建启动脚本start_krakend.sh,内容如下:
#!/bin/sh # 执行OpenAPI导出命令(按需调整参数,示例为导出到本地挂载目录) krakend openapi export -c /etc/krakend/krakend.json -o /etc/krakend/openapi.json # 启动Krakend服务 krakend run -d -c /etc/krakend/krakend.json
- 给脚本添加执行权限:
chmod +x ./krakend/start_krakend.sh
- 修改Docker Compose配置,将启动命令指向该脚本:
version: "3" services: krakend_ce: image: devopsfaith/krakend:watch volumes: - ./krakend:/etc/krakend ports: - "9000:9000" command: ["/bin/sh", "/etc/krakend/start_krakend.sh"]
方案二:直接在command中串联命令
无需额外脚本,用sh -c直接组合两个命令:
version: "3" services: krakend_ce: image: devopsfaith/krakend:watch volumes: - ./krakend:/etc/krakend ports: - "9000:9000" command: sh -c "krakend openapi export -c /etc/krakend/krakend.json -o /etc/krakend/openapi.json && krakend run -d -c /etc/krakend/krakend.json"
关键说明
- 你示例中的
krakend openapi export -h是帮助命令,实际导出需要指定配置文件(-c)和输出路径(-o),上面的配置已替换为常用导出参数,可根据需求修改。 - 因为挂载了本地
./krakend目录,导出的OpenAPI文件会同步到本地,方便后续使用。 - 用
&&串联命令时,只有导出命令执行成功才会启动Krakend;如果希望不管导出结果都启动服务,可将&&替换为;。
内容的提问来源于stack exchange,提问作者emoleumassi
相关产品推荐
相关产品推荐

