Не работает cron в docker контейнере

05 Мар, 2017 16:55
На основе официального образа php 5.6.30-apache (https://github.com/docker-library/php/tree/e573f8f7fda5d7378bae9c6a936a298b850c4076/5.6/apache) собрал новый образ с измененным entrypoint.sh


#!/bin/sh
set -e

# first arg is `-f` or `–some-option`
if [ "${1#-}" != "$1" ]; then
	set – apache2-foreground "$@"
fi

exec "$@"

service cron start
apache2-foreground

Задание cron выполняются но очень странно, если повесить на cron скрипт cron_test.php:

<?
echo "runing cron task\n";

if(empty($_SERVER['DOCUMENT_ROOT'])) {
	$_SERVER['DOCUMENT_ROOT'] = '/srv/www/vhosts/www.rx8.ru/www';
}

$file_name = $_SERVER['DOCUMENT_ROOT'] . '/log/cron_test.txt';
$f = fopen($file_name, 'w'smile;
fwrite($f, "OK\n"smile;
fclose($f);
?>

то файл /log/cron_test.txt будет изменятся, по времени изменения видно что cron работает, но записывается в него пустая строка. Если запустить скрипт из консоли то все работает. Как такое может быть?
Отредактировано 21 Мар, 2017 19:46
06 Мар, 2017 14:07
выглядит вроде все прилично
покажите как вы добавляете задания в крон и список самих заданий
06 Мар, 2017 14:15
Добавляю из Dockerfile задания

COPY crontab.cfg /crontab.cfg
RUN crontab -u www-data /crontab.cfg

задания выглядят все однотипно

*/5 * * * * php -f /site/code/cron_events.php >> /site/log/agents_log.txt
Отредактировано 06 Мар, 2017 14:16
07 Мар, 2017 12:15
побробуйте сделать так

RUN crontab /crontab.cfg

и добавить sudo в вызов скриптов

*/5 * * * * sudo -u www-data php -f /site/code/cron_events.php >> /site/log/agents_log.txt
09 Мар, 2017 18:49
Ваш совет помог, спасибо! Понять бы еще почему оно так…
 
Зарегистрируйтесь или войдите чтобы оставить сообщение.