Docker:为什么等待总是超时?

时间:2017-06-20 21:20:05

标签: docker docker-compose

This page讨论了如何使用docker-compose控制启动顺序。它推荐了三个工具: wait-for-it dockerize wait-for

我一直在努力让等待它等待按预期工作,但在这个问题上,我将专注于 {{ 3}} 的。

每次我的docker容器启动时,它都会退出“Operation Timed Out”。

这是我非常简单的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"'

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

wait-for

我已经尝试提供超时标志,它会调整超时,但不会影响结果。我也尝试将此脚本作为docker-compose命令的一部分运行(遵循上面链接的docker-compose文档页面上的示例),但同样的结果也是如此。

我做错了什么?

2 个答案:

答案 0 :(得分:6)

您遗漏了netcat个软件包,并且示例图片中没有nc。在Dockerfile

中的某处添加以下内容
RUN apt-get -q update && apt-get -qy install netcat

答案 1 :(得分:2)

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

  • 使用他的命令
  • 手动安装软件包
  • 切换到使用bash的wait-for-it,因为你的基本图像是ubuntu。此脚本不需要nc,因为bash可以直接命中端口。
  • 如果您不需要bash,请切换到alpine linux,它附带nc。这只是意味着将第一行更改为FROM alpine