Постоянно запускать скрипт bash в контейнере Azure - PullRequest
0 голосов
/ 20 марта 2019

Мне нужно непрерывно запускать сценарий bash в течение неопределенного времени внутри док-контейнера в Azure через службу экземпляра контейнера Azure (ACI).Мой bash-скрипт имеет цикл while, который поддерживает его работу, а в контейнере Azure есть свойство OnFailure для перезапуска контейнера в случае сбоя.

Я вижу, что после запуска Контейнера в течение примерно 2 дней статус Контейнера работает.Тем не менее сценарий bash, который выполнялся на переднем плане и отправлял журналы в консоли контейнера Azure, кажется, умер и больше не отправляет журналы на консоль.Я также вижу, что он не выполняет то, что должен.

Как я могу надежно поддерживать этот скрипт bash в течение неопределенного времени в контейнере Azure?

Скрипт bash, который имеет внутренний цикл while, выполняется какниже:

Commands
bash
my-while-loop-script.sh

1 Ответ

0 голосов
/ 30 мая 2019

Чтобы решить эту проблему, я заменил цикл while внутри my-while-loop-script.sh на crond, чтобы выполнить приложение python в качестве задания cron. ниже строка, которая выполняет cron внутри my-while-loop-script.sh. эта строка выполнит my-cron.cron содержимое показано ниже:

./busybox crond -f

Для этого я использовал busybox 1.30.1 инструменты. Чтобы установить busybox в вашем докере:

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

И вам также нужно добавить настройки cron в crontabs dir.

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...