Задать вопрос
@resolution07
PHP Backend

Как все таки использовать cron в связке Docker+php-fpm?

Прошло уже туево-тутуево времени. А нормальный ответ на этот вопрос я так и не услышал. Читал много статей, но кроме холивара в комментариях ничего нет. Все начинают разглагольствовать про принципы docker и на этом все заканчивается. Был ли у кого то такой кейс? Как настраивали?

ИМХО. Затолкать cron в контейнер с приложением и пусть там все крутится. Либо поделить приложение на 2 контейнера. Один работает с запросами, второй с cron занимается фоновыми задачами. Вариант держать cron на хосте и дергать через команды контейнер - дико.
  • Вопрос задан
  • 228 просмотров
Подписаться 2 Средний 1 комментарий
Решения вопроса 3
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Ничего дикого в кроне на хосте нету (особенно если это не крон, а systemd-таймер), как и в отдельном сервисе-планировщике. А если хотите, чтобы было прям по фэншую - юзайте Kubernetes + CronJobs.
Ответ написан
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
Если честно - не понимаю смысла вопроса, вы же изучили теорию
сделайте так, как будет удобно вам - вам же с этим жить
а вообще надо исходить из того чем занимается cron задачи - где-то, ради изоляции потребления ресурсов, лучше вынести крон во второй контейнер, а где-то вы решите запихать его внутрь контейнера приложения
По поводу запуска на хосте - сервисы контейнеризации обычно не дают доступ к хосту
Ответ написан
Комментировать
@galliard
Я обычно делаю один образ с кроном и php, но запускаю его в двух разных контейнерах - fpm и cron. Для крона еще в докерфайле создаю скриптик, который помимо запуска самого крона будет записывать переменные окружения в создаваемый на лету .env файл, так как настоящий .env у меня в докеригноре. Выглядит это так:
// ...команды настройки php

RUN echo 'printenv | grep  \
    -e APP_ENV \
    -e DATABASE_URL \
     > ./.env && cron -f -L 15' > ${APP_DIR}/cron-starter

RUN chmod 700 ${APP_DIR}/cron-starter


Это нужно потому что докер запуская команды не передает им переменные окружения, а все современные фреймворки конфигурируются как раз с их помощью.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы