我需要通过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
答案 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