如何在Alpine Linux中使用bash脚本?

我对使用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

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...