Crontab не выполняет команды в докере

Я создаю веб-приложение, в котором инструкторы проводят курсы, а клиенты их покупают. Мне нужна была автоматизация смены статусов курсов. В значительной степени просто проверка некоторых условий и, например. закрытие курса, когда текущее время больше, чем крайний срок. Я использую php-symfony, все докеризовано. Итак, чтобы получить доступ к моему php-контейнеру, мне нужно запустить docker-compose и ввести docker-compose exec php bash. Что ж, в php у меня есть команда, которую я могу запустить вручную, чтобы проверить все статусы курсов и, возможно, внести некоторые изменения в базу данных, если условия соблюдены. Но для автоматизации этого процесса я решил использовать crontabs. Я проверил команду в cmd, есть ли у меня все права на это, и она сработала, поэтому я просто поместил ее в crontab для выполнения каждую минуту.

* * * * * cd /home/martin/PhpstormProjects/bp_project && sudo docker-compose exec php php bin/console courses-check >/dev/null 2>&1

Первая часть попадает в папку проекта, вторая часть открывает докер-контейнер и запускает команду проверки статусов курсов. В cmd вся команда работала. И даже в /var/журнал/системный журнал, который должен быть файлом журнала crontab по умолчанию, он дал мне этот вывод:

May  8 16:42:01 martin-ubuntu CRON[1032921]: (martin) CMD (cd /home/martin/PhpstormProjects/bp_project && sudo docker-compose exec php php bin/console courses-check >/dev/null 2>&1)

Я не вижу никаких видимых ошибок, но, глядя в базу данных, он не изменил никаких значений, хотя должен был.

Так что я подумал, что это может быть что-то с докером? Я попытался добавить вторую команду в crontab:

* * * * * cd /home && echo "hi" > a.txt

И он каждую минуту сохранял "привет" в заданный файл. Итак, хотя первая команда не работает, эта работает. Любые идеи, где скрытая проблема?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

измените свой crontab на это

* * * * * sudo docker-compose -f /home/martin/PhpstormProjects/bp_project/docker-compose.yml run --rm php sh -c ' bin/console courses-check' >/dev/null 2>&1

Другие вопросы по теме