Как запустить задания cron внутри контейнера в фоновом режиме, когда у меня есть приложение nodejs в качестве конечной точки на переднем плане? - PullRequest
0 голосов
/ 25 мая 2018

Мы следуем архитектуре на основе микросервиса, где я развертываю свое приложение в кластере kubernetes с помощью пакета helm.У меня есть приложение nodejs, которое запрашивает задания cron из базы данных и должно добавить эти задания в файл crontab внутри того же контейнера.

Поэтому, когда я представляю свой контейнер как приложение nodejs в порту, я создаю задание добавленияrequest и эти задания форматируются в типе задания cron, и эти записи необходимо добавить в crontab и выполнить эти задания в фоновом режиме.

Можно ли этого достичь?

Если да, на какой основеimage Должен ли я создать свое приложение для узла?

И какие шаги я должен включить в свой файл Docker, чтобы также проверить мои журналы, выполненные cron, запустить как приложение для узла, так и задания cron?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Я понимаю, что вы ищете планировщик заданий, по моему опыту, размещение более 1 процесса на контейнер - не лучшая идея, возможно, вы можете использовать другой подход, используя дополнительный микросервис, который выполняет эти задания.

Я рекомендую использовать Повестку дня

https://github.com/agenda/agenda

Вы можете создать работника Повестки дня, у которого есть код для различных заданий, и единственное, что вам нужно, - это отправить запланированное задание или выполнить его сейчас.Благодаря этой архитектуре вы можете иметь несколько повесток дня также в виде контейнера с коляской внутри одного модуля приложения вашего узла.

0 голосов
/ 25 мая 2018

Вы можете определить проверку работоспособности в файле Docker.Это также возможно в docker-compose и при запуске docker-контейнера через cli.

Я всегда рекомендую отключить возможную предыдущую проверку работоспособности, если вы наследуете свой dockerfile от другого неосновного образа, добавив HEALTHCHECK NONE после условия FROM.

Как только это будет сделано, определите свою собственную проверку здоровья, добавив в свой файл Docker:

HEALTHCHECK <options> CMD <your command with args> || exit 1

Это провоцирует, что когда вы выполните docker ps , вы увидите, является ли контейнерзапущен или остановлен, и если он запущен, если он исправен или нет , т. е. если ваша команда выполняется / была выполнена правильно.

Для получения дополнительной информации о параметрах вы можете увидеть Документация Docker Healthcheck

...