Есть приложение на laravel, развернутое на docker compose. Реализован простой планировщик задач на laravel.
Schedule::call(function () {
Log::info('Hello World!');
})->everyTwoSeconds();
С помощью докер файла добавляю задачу в крон при каждом запуске контейнера.
FROM php:8.2-fpm
RUN apt-get update && apt-get install -y cron
RUN echo "* * * * * php artisan schedule:run >> /dev/null 2>&1" > /etc/cron.d/my_cron_jobs
RUN chmod 0644 /etc/cron.d/my_cron_jobs
RUN crontab /etc/cron.d/my_cron_jobs
WORKDIR /var/www/laravel
RUN docker-php-ext-install pdo pdo_mysql
Если я вручную захожу в контейнер и в папке с проектом прописываю php artisan schedule:run, то планировщик работает и логи отправляются. А автоматически cron это выполнять не хочет. В чем может быть проблема?
Вот еще код docker-compose:
version: "3.8"
services:
nginx:
image: "nginx:stable-alpine"
ports:
- "8000:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./:/var/www/laravel
php:
build:
dockerfile: Dockerfile
volumes:
- ./:/var/www/laravel
mysql:
build:
dockerfile: mysql.Dockerfile
container_name: mysql_db
restart: always
env_file:
- mysql.env
ports:
- "3306:5891"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
cron_data: