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

前端之家收集整理的这篇文章主要介绍了如何在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

猜你在找的Docker相关文章