для запуска контейнера cronjob (Alpine), вам нужно убедиться, что команда вашего docker контейнера -
exec crond -f
, если вы хотите добавить это в docker файл
CMD ["exec", "crond", "-f"]
Вам также может потребоваться обновить файлы кукурузы перед выполнением вышеуказанной команды
Обновление на основе файла docker и составление
Чтобы иметь возможность решить ваши проблемы, которые необходимо обновить для docker -композиции, чтобы иметь два контейнера, один для cron и один для веб
service_php_cron:
build:
context: .
dockerfile: .docker/services/php/Dockerfile.dev
container_name: base_service_php
command: 'cron_jobs'
volumes:
- ./app:/var/www/html/public
env_file:
- ./.env
# Low level container logging
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "5"
service_php:
build:
context: .
dockerfile: .docker/services/php/Dockerfile.dev
ports:
- "9000:9000"
command: 'web_server'
container_name: base_service_php
volumes:
- ./app:/var/www/html/public
env_file:
- ./.env
# Low level container logging
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "5"
, вам также необходимо обновить файл docker, чтобы иметь возможность обрабатывать несколько команд с помощью docker точки входа
Добавьте строку ниже в ваш docker файл + удалите CMD один
COPY ./docker-entrypoint.sh /
RUN chmod a+x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
и, наконец, создайте точку входа (убедитесь, что она sh выполнена разрешения)
#!/bin/sh -e
case $1 in
web_server)
YOUR WEB SERVER COMMAND
;;
cron_jobs)
exec crond -f
;;
*)
exec "$@"
;;
esac
exit 0
Вы можете проверить эту ссылку для получения дополнительной информации о entrypoints