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页面)。
我已经尝试提供超时标志,它会调整超时,但不会影响结果。我也尝试将此脚本作为docker-compose命令的一部分运行(遵循上面链接的docker-compose文档页面上的示例),但同样的结果也是如此。
我做错了什么?
答案 0 :(得分:6)
您遗漏了netcat
个软件包,并且示例图片中没有nc
。在Dockerfile
:
RUN apt-get -q update && apt-get -qy install netcat
答案 1 :(得分:2)
正如Andy所提到的,您需要安装nc
。你可以:
nc
,因为bash可以直接命中端口。nc
。这只是意味着将第一行更改为FROM alpine
。