Docker Compose错误-“ wait-for-it.sh:没有这样的文件或目录”

zoo*_*oes 2 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 up时出现以下错误。

无法启动服务控制中心:OCI运行时创建失败:container_linux.go:296:启动容器进程导致“ exec:\”。/wait-for-it.sh \”:stat ./wait-for-it.sh:没有此类文件或目录”:未知

我在Windows 10上,将docker用于Windows和Powershell。

Ale*_*502 6

./wait-for-it.sh仅当您使用具有图像的图像时,该图像才起作用。您可以创建自己的Dockerfile,该文件可以扩展confluentinc/cp-enterprise-control-center并放入start命令的包装器脚本中。

您可以使用docker compose yaml版本2,对kafka容器的运行状况检查和depends_on来完成类似的操作。

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

控制中心部分中的内容如下:

depends_on:
  kafka:
    condition: service_healthy
Run Code Online (Sandbox Code Playgroud)

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

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:9092"]
  interval: 1m30s
  timeout: 10s
  retries: 3
  start_period: 40s
Run Code Online (Sandbox Code Playgroud)

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

然后也许在顶部

version: '2.3'
Run Code Online (Sandbox Code Playgroud)

我认为他们说某处组成文件版本3确实适用于docker swarm,这就是为什么它不支持此功能的原因,并且如果您不使用docker swarm,则可以坚持使用版本2。

...

如果您要等待其他容器启动,那么以上就是全部。 在docker-compose版本3中,depends_on条件形式的替代方案是什么?解释说这可能不再是推荐的处理方式,因为它无法处理容器重启。

我想这取决于您的Docker撰写设置是用于测试还是用于生产。