Docker: установите время ожидания и завершите работу с кодом ошибки

#docker #dockerfile #containers

#docker #dockerfile #контейнеры

Вопрос:

Как заставить контейнер Docker завершать работу с кодом ошибки после истечения времени ожидания?

У меня есть Dockerfile, который использует ubuntu изображение и копирует файл сценария из моего каталога в изображение и, наконец, выполняет скрипт в контейнере.

 FROM ubuntu
WORKDIR /usr/bin/
COPY ./example.py .
RUN chmod  x example.py
ENTRYPOINT ["python3", "example.py"]
  

Затем я запускаю команду сборки:

 docker build -t demo .
  

запустите контейнер:

 docker run -it --rm demo
  

Я не уверен, сколько времени потребуется для успешного выполнения example.py сценарий, но я хочу выйти из контейнера через 1 час.
Если example.py скрипт успешно выполнен в течение 1 часа, тогда все в порядке, в противном случае я хочу выйти с кодом ошибки.

Ответ №1:

Вы можете использовать timeout команду следующим образом :

 ENTRYPOINT ["timeout", "3600", "python3", "example.py"]
  

Если python3 example.py требуется более 1 часа (3’600 секунд), будет возвращена ошибка (код выхода 124).

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

1. Конечно, позвольте мне попробовать это. Спасибо за ваш ответ

2. @RedwolfPrograms вы правы, спасибо за уловку 🙂 Я обновлю свой ответ!