#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