Проблема с подключением Cron к проекту на Laravel в Docker
Версия Laravel - 10, PHP - 8.1 Пытаюсь добавить планировщик задач Cron в проект, чтобы можно было реализовать фоновое выполнение задач при помощи планировщика задач Laravel. При попытке пересборке контейнера для внесения изменений по Cron'y (docker-compose build php) выдает следующее:
chmod: changing permissions of '/etc/cron.d/schedule': Operation not permitted
Если убрать строчку с chmod 0644, то выдает следующее:
cron: can't open or create /var/run/crond.pid: Permission denied
Прошу подсказать, что я упустил или делаю не так.
Содержимое Dockerfile для контейнера с PHP:
FROM php:8.1-fpm
WORKDIR /var/www/html
RUN apt-get update && apt-get install -y \
nano \
git \
curl \
libpq-dev \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip \
cron
RUN curl -sS https://getcomposer.org/installer | php -- --filename=composer --install-dir=/usr/bin --filename=composer
RUN docker-php-ext-install pdo_mysql
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www
COPY --chown=www:www . /var/www/html
USER www
ADD schedule /etc/cron.d/schedule
RUN chmod 0644 /etc/cron.d/schedule
RUN crontab /etc/cron.d/schedule
RUN service cron start
Содержимое файла docker-compose.yml:
version: "3"
services:
nginx:
image: nginx
restart: always
ports:
- 80:80
volumes:
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./:/var/www/html/
networks:
- backend
php:
build:
context: docker/php
restart: always
volumes:
- ./:/var/www/html/
networks:
- backend
depends_on:
- nginx
db:
image: mysql
restart: always
volumes:
- ./docker/db/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_USER: ${MYSQL_USERNAME}
MYSQL_PASSWORD: ${DB_PASSWORD}
ports:
- 127.0.0.1:${DB_PORT_DOCKER}:3306
networks:
- backend
networks:
backend: