Docker撰写错误 - " wait-for-it.sh:没有这样的文件或目录"

时间:2018-02-28 04:13:11

标签: docker docker-compose

我有以下docker compose文件,我正在尝试使用" wait-for-it.sh",以便在kafka经纪人可用后控制中心出现

control-center: image: confluentinc/cp-enterprise-control-center hostname: control-center restart: always depends_on: - zookeeper - kafka - schema_registry - connect **command: ["./wait-for-it.sh", "kafka:9092"]**

执行docker-compose时,我收到以下错误。

无法启动服务控制中心:OCI运行时创建失败:container_linux.go:296:启动容器进程导致" exec:\" ./ wait-for-it.sh \& #34;:stat ./wait-for-it.sh:没有这样的文件或目录":未知

我在Windows 10上,使用docker for windows并使用PowerShell。

1 个答案:

答案 0 :(得分:4)

./wait-for-it.sh仅在您使用包含它的图片时才有效。您可以创建自己的扩展confluentinc/cp-enterprise-control-center的Dockerfile,并为启动命令添加包装脚本。

您可以使用docker compose yaml version 2,kafka容器上的运行状况检查以及depends_on来完成类似的事情。

我认为这不适用于撰写文件版本3。

在控制中心部分

这样的事情:

depends_on:
  kafka:
    condition: service_healthy

kafka部分中的类似内容:(不知道curl命令是否会正确检查kafka。可能有更好的命令)

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:9092"]
  interval: 1m30s
  timeout: 10s
  retries: 3
  start_period: 40s

(来自https://docs.docker.com/compose/compose-file/compose-file-v2

然后可能在顶部

version: '2.3'

我认为他们说组件文件版本3真的适用于docker swarm,这就是为什么它不支持这个功能,如果你不使用docker swarm,你可以坚持使用版本2。

...

以上都是如果等待其他容器启动的是您想要做的。 What is the alternative to condition form of depends_on in docker-compose Version 3?解释说这可能不再是推荐的做事方式,因为它不会处理容器重启。

我想这取决于您的码头工具是用于测试还是用于生产。