как запустить cron при запуске док-контейнера Rbase - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь собрать докер-контейнер, который запускает R и cron. Мне нужно, чтобы cron запускался автоматически при запуске контейнера.

Мой dockerfile выглядит так:

# Install R version 3.6
FROM r-base:3.6.0

#install crontab
RUN apt-get update && apt-get -y install cron

# also tried CMD /etc/init.d/cron start
CMD cron

Затем я собрал образ и запустил контейнер в bash. Я проверил статус cron:

/etc/init.d/cron status

Я получил статус cron, как показано ниже:

[FAIL] cron is not running ... failed!

Я смог запустить cron, запустив cron вручную:

/etc/init.d/cron start

У меня вопрос, как мне изменить свой dockerfile (строка CMD), чтобы при запуске docker-контейнера автоматически запускался cron?

Заранее большое спасибо.

1 Ответ

1 голос
/ 09 октября 2019

CMD /etc/init.d/cron start запустит cron в фоновом режиме, поэтому ваш контейнер умрет, как только он будет создан.

Во втором варианте добавьте -f

# Install R version 3.6
FROM r-base:3.6.0

#install crontab
RUN apt-get update && apt-get -y install cron

# also tried CMD /etc/init.d/cron start
CMD [ "cron", "-f" ]

, чтобы ваш контейнер продолжал работать.

-f
Stay in foreground mode, don't daemonize.

Но вы не сможете увидеть cronиспользуя /etc/init.d/cron status. используйте ниже dokcerfile.

FROM r-base:3.6.0
RUN apt-get update &&  apt-get -y install cron
RUN apt-get install procps -y
CMD ["cron" ,"-f"]

и затем запустите

docker exec -it <your_container_id> bash -c "ps -aux"

. Вы увидите, что cron запущен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...