Запустить скрипт PHP с контейнером Docker - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть настройка с docker-compose с использованием nginx с php7 -fpm. Это работает, и моя PHP страница работает нормально. Теперь мне нужно выполнить несколько скриптов php в задании Cron, но я не хочу устанавливать php на хост-компьютере, где я планирую установить задания Cron.

Как запустить сценарии php с использованием контейнера php7 -fpm docker?

На моей старой системе я установил php7, чтобы я мог настроить задачу cron как это:

0 2 * * * /usr/bin/php /var/www/page/cron/my_php_script.php >> /var/log/cron.log 2>&1

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Есть несколько способов, но я сделаю это, перейдя в папку проекта и выполнив docker-compose exec. Пример:

0 2 * * *   cd /my/project/folder && docker-compose exec -T php-fpm-container php -f /my/project/folder-inside-container/cron/my_php_script.php >> /var/log/cron.log 2>&1

Некоторые важные моменты здесь:

  1. Должно быть docker-compose.yml с установленной средой (если вы не можете использовать флаг -f указать на docker -компонентный файл)
  2. php-fpm-container должно быть именем вашей службы / контейнера с установкой php -fpm
  3. Если вы хотите передать журналы в файл должна быть смонтирована папка, чтобы вы могли получить к ней доступ из-за пределов контейнера. Или вы можете направить вывод в /dev/stdout, чтобы к нему можно было получить доступ командой docker-compose logs.
0 голосов
/ 13 апреля 2020

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

В качестве альтернативы вы можете использовать докеры exe c command , это позволяет вам выполнять команду внутри указанного контейнера. Ваш crontab может запустить docker exec с вашей командой PHP.

...