如何在Alpine Linux中使用bash脚本?
我有兴趣在Docker-Compose中使用wait-for-it来使用一个服务,使用基于Alpine Linux发行版的映像来等待另一个服务。
但是,如果我克隆wait-for-it
存储库,并添加到它下面的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 .
来构build它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脚本不能在我的Ubuntu本地机器上的Alpine容器中工作。 我怎样才能解决这个问题?
wait-for-it
脚本不兼容,所以你需要安装bash
到你的高山形象。
但是,我可以build议避免这样的“黑客”,并使用HEALTHCHECK
?
例如,有一个服务等待另一个服务是健康的将看起来像这样:
services: my_service: image: something healthcheck: test: nc -z 3306 other_service depends_on: my_service: condition: service_healthy
请注意,这只适用于v2
撰写文件,而不是v3
如果你在这里find解决scheme,在Alpine上运行脚本的“没有这样的文件或目录”错误,另一个要检查的是你的脚本有unix行结尾。
在我的情况下,我在Windows中保存脚本,并将其添加到泊坞窗图像,并给出了同样无益的错误消息。
- Docker alpine vm,访问主机的/ etc / hosts文件configuration
- Docker Alpine image + grpc:警告:使用了不安全的环境读取function'getenv'
- Gradle在jenkins中失败:高山容器:UnsatisfiedLinkError:linux-amd64 / libnative-platform.so:libstdc ++。so.6:
- 高山linux不执行编译nodejs
- 高山linuxdocker上的apache-spark启动错误
- 如何在Alpine linux中安装一个最小的cuda驱动文件
- 在Docker中运行Linux Alpine 3.6的M2Crypto ImportError
- 无法在官方Docker PHP Alpine映像中安装一些PHP扩展(模块)
- 在Docker Alpine上安装numpy