Docker:为什么总是等待?

本页讨论如何使用docker-compose控制启动顺序。 它推荐三种工具: 等待docker等待

我一直在努力争取等待等待工作,但在这个问题上,我会专注于等待

每当我的docker集装箱启动,它退出“操作超时”。

以下是我非常简单的docker文件:

FROM ubuntu COPY ./wait-for.sh / WORKDIR / RUN chmod +x ./wait-for.sh CMD sh -c './wait-for.sh www.eficode.com:80 -- echo "Eficode site is up"' 

这应该将脚本从当前目录复制到根目录,使其可执行,并设置运行命令来执行脚本并检查eficode网站的状态(从eficode github页面获取的示例)。

显示错误消息的图像

我已经尝试提供超时标志,这会调整超时,但不会影响结果。 我也试过把这个脚本作为docker-compose命令的一部分运行(在上面链接的docker-compose文档页面上的例子之后),但是同样的结果。

我究竟做错了什么?

您缺lessnetcat软件包,而且nc在示例图像中不可用。 在您的Dockerfile添加以下Dockerfile

 RUN apt-get -q update && apt-get -qy install netcat 

正如Andy所说,你需要安装nc 。 您可以:

  • 用他的命令手动安装软件包
  • 切换到等待,因为你的基本映像是Ubuntu的使用bash。 这个脚本不需要nc因为bash可以直接打到ports。
  • 如果你不需要bash的话,切换到高山linux,它附带nc 。 这只是意味着将第一行改为“ FROM alpine