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

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

  От: Shatrov 7 августа 2019 г. 22:33

На основе официального образа 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['DOCUMENTROOT'])) {
$SERVER['DOCUMENTROOT'] = '/srv/www/vhosts/www.rx8.ru/www';
}

$filename = $SERVER['DOCUMENTROOT'] . '/log/crontest.txt';
$f = fopen($filename, 'w'smile;
fwrite($f, "OK\n"smile;
fclose($f);
?>
```
то файл /log/cron
test.txt будет изменятся, по времени изменения видно что cron работает, но записывается в него пустая строка. Если запустить скрипт из консоли то все работает. Как такое может быть?

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

  От: fermeg 7 августа 2019 г. 22:35

выглядит вроде все прилично
покажите как вы добавляете задания в крон и список самих заданий

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

  От: Shatrov 7 августа 2019 г. 22:37

Добавляю из 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

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

  От: fermeg 7 августа 2019 г. 22:38

побробуйте сделать так

RUN crontab /crontab.cfg

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

*/5 * * * * sudo -u www-data php -f /site/code/cron_events.php >> /site/log/agents_log.txt