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
。