我对使用wait-for-it使用基于Alpine Linux发行版的映像在Docker-Compose中使一项服务等待另一项感兴趣.
但是,如果我克隆“等待”存储库并添加以下Dockerfile,
FROM alpine
RUN apk --update add bash
copY wait-for-it.sh wait-for-it.sh
CMD ["./wait-for-it.sh", "www.google.com:80"]
然后我使用docker build –tag waitforit来构建它.其次是docker run waitforit,但我收到此错误消息:
timeout: can't execute '15': No such file or directory
wait-for-it.sh: timeout occurred after waiting 15 seconds for www.google.com:80
相比之下,这是在我的(Ubuntu 16.04 LTS)计算机上运行此命令时看到的内容:
wait-for-it.sh: waiting 15 seconds for www.google.com:80
wait-for-it.sh: www.google.com:80 is available after 0 seconds
好像bash脚本无法在Alpine容器中工作,就像在我的Ubuntu本地计算机上一样.我怎样才能解决这个问题?
解决方法:
该等待脚本与sh不兼容,因此您需要将bash安装到您的高山映像中.
但是,我是否建议避免像这样的“黑客”,而改用HEALTHCHECK?
例如,让一项服务等待另一项变得健康将看起来像这样:
services:
my_service:
image: something
healthcheck:
test: nc -z 3306
other_service
depends_on:
my_service:
condition: service_healthy
请注意,这仅适用于v2撰写文件,不适用于v3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。