在Azure容器中连续运行bash脚本

时间:2019-03-20 02:53:20

标签: bash azure docker-container azure-container-service

我需要通过Azure容器实例服务(ACI)在Azure的Docker容器内无限期连续运行bash脚本。我的bash脚本有一个while循环,可以保持运行状态,Azure容器具有OnFailure属性,以在失败时重新启动容器。

我看到运行Container 2天后,Container状态为“运行中”。但是,在前台运行并在azure容器控制台中发送日志的bash脚本似乎已终止,不再将日志发送到控制台。我还看到它没有按照预期做。

我如何可靠地使此bash脚本在Azure容器中无限期地运行?

具有内部while循环的bash脚本运行如下:

Commands
bash
my-while-loop-script.sh

1 个答案:

答案 0 :(得分:0)

为解决此问题,我在my-while-loop-script.sh内的while循环中替换了crond以将python应用程序作为cron作业执行。下面是在my-while-loop-script.sh中执行cron的行。该行将执行以下显示的my-cron.cron内容:

./busybox crond -f

为此,我使用了busybox 1.30.1工具。要在您的Docker中安装busybox:

ADD busybox-1.30.1/ /busybox
WORKDIR /busybox
RUN make defconfig
RUN make

而且,您还需要将cron设置添加到crontabs目录中。

RUN mkdir -p /var/spool/cron/crontabs/
# Copy cron settings
ADD my-cron.cron /var/spool/cron/crontabs/root

示例my-cron.cron看起来像是普通的cron文件:

* * * * * python my-app.py