Непрерывный запуск bash-скрипта в контейнере Azure

#bash #azure #docker-container #azure-container-service

#bash #azure #docker-контейнер #azure-container-service

Вопрос:

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

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

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

Скрипт bash, который имеет внутренний цикл while, выполняется следующим образом:

 Commands
bash
my-while-loop-script.sh
  

Комментарии:

1. Как запустить bash-скрипт в ACI? Запускать его только один раз или запускать как циклическую задачу?

2. Как мне запустить его как циклическую задачу? @CharlesXu

3. Возможно, вы можете попробовать cron в ОС Linux. Это временная задача.

4. @ Charles Xu пришлось много покопаться, но, наконец, нашел, как работать от имени Cron, и это сработало.

5. Это здорово. Что ж, вы можете добавить ответ для других, которые ищут это.

Ответ №1:

Чтобы решить эту проблему, я заменил цикл 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 в вашем docker:

 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