До докера
Внутреннего использования люмена
Служба очередей системы выполняет асинхронную операцию для выполнения некоторых связанных операций аудита содержимого. Но каждый раз, когда вы перезапускаете контейнер, вам нужно вводить его. докер
Внутренний запуск люмен
Процесс очереди (хотя и записан в документе) супервайзер
Управление процессами, но не делает этого. Необходимо использовать последние требования crontab
, поэтому я решил использовать его. руководители
Для управления этими процессами.
руководитель
файл dockerfile
Installation RUN apt-get update && apt-get install -y \ supervisor\ cron \ #supervisord RUN mkdir -p /var/log/supervisor COPY supervisord.conf /etc/supervisor/supervisord.conf #crontab # Add root file to / var / spool / cron / crontabs / below ADD cron/root /var/spool/cron/crontabs/root # Modifying the Groups and Permissions of Root Files RUN chown -R root:crontab /var/spool/cron/crontabs/root \ && chmod 600 /var/spool/cron/crontabs/root # Create log file RUN touch /var/log/cron.log EXPOSE 80 ENTRYPOINT ["/usr/bin/supervisord","-c", "/etc/supervisor/supervisord.conf"]
примечания : ТОЧКА ВХОДА
Необходимо добавить инструкции -c
Параметры, иначе будет одно ПРЕДУПРЕЖДЕНИЕ
примечания ||: || ТОЧКА ВХОДА || Необходимо добавить инструкции || -c || Параметры, иначе будет одно || ПРЕДУПРЕЖДЕНИЕ
[supervisord] nodaemon=true [program:apache2] command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND" autostart=true autorestart=true [program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/html/artisan queue:work --daemon --quiet --delay=3 --sleep=3 --tries=3 autostart=true autorestart=true numprocs=3 redirect_stderr=true [program:entrypoint] command=/var/www/html/entrypoint.sh [program:cron] command=/etc/init.d/cron start autostart=true autorestart=true redirect_stderr=true
Вот несколько моментов, которые следует отметить:
nodaemon=true
Процесс супервайзеров будет выполняться на переднем плане Это должно быть правдой, иначе он запускается. докер
Иногда он будет появляться. Вышел (0)
, докер
Вывод. Потому что должно быть что-то бегущее перед зеркалом.
имя процесса=%(имя программы)s_%(номер процесса)02d
Имя процесса numprocs=3
Попросите супервайзера запустить 3 процесса остаться numprocs
Несколько раз имя_процесса
Для требуемого значения, в противном случае имя будет конфликтовать, чтобы сообщить об ошибках
В этой статье содержится подробное описание конфигурации супервизора
Очередь на просвет
Документация очень подробная, и здесь больше нет избыточности.
Эта статья также очень подробная.
кронтаб
Выше файл dockerfile
В файле были записаны конкретные установки и настройки.
Документация содержит конкретное использование задач синхронизации laravel
Обратите внимание, что cron
Нужно после установки супервайзер
Запустить, а затем вам нужно записать запись о временной задаче в один root
В документе, dockerfile
в добавить
Зеркальное изображение /var/катушка/cron/crontabs/root
Каталог
* * * * * /usr/local/bin/php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
Будьте осторожны Нужно написать /usr/local/bin/php
В противном случае задача не будет выполнена.
Этот cron будет вызываться каждую минуту lumen
Планировщик команд планировщик:запуск
После выполнения команды/| lumen Оцените запланированные задачи и выполните запланированные задачи.
Вы можете столкнуться с ситуациями, когда задачи не выполняются и их необходимо проверить /var/log/cron.log
Файл журнала, см. Конкретные причины. Установка требуется, если в файле журнала нет содержимого rsyslog
, Затем измените /etc/rsyslog.conf
Документ будет cron.*/var/log/cron.log
Удалите предыдущий комментарий. Затем /etc/init.d/запуск rsyslog
Посмотрите еще раз cron.log
Вы можете просмотреть соответствующий журнал.
Будьте осторожны : crontab
Использование переменных среды
Поскольку crontab
Механизм выполнения не позволяет напрямую использовать переменные среды конфигурации, но конфигурация нашего приложения настраивается с помощью переменных среды, поэтому нам нужно сохранить эти переменные среды в команде env. /etc/по умолчанию/язык
Li, crontab
Переменные среды в этом файле будут загружены при запуске, в противном случае соответствующая конфигурация приложения будет недоступна при выполнении команды, что приведет к ошибкам выполнения. Поэтому я воспользовался одним из них. оболочка
Скрипт, в супервизор
Выполните его.
Поскольку || crontab || Механизм выполнения не позволяет напрямую использовать переменные среды конфигурации, но конфигурация нашего приложения настраивается с помощью переменных среды, поэтому нам нужно сохранить эти переменные среды в команде env. ||/etc/по умолчанию/язык || Li, || crontab || Переменные среды в этом файле будут загружены при запуске, в противном случае соответствующая конфигурация приложения будет недоступна при выполнении команды, что приведет к ошибкам выполнения. Поэтому я воспользовался одним из них. || оболочка || Скрипт, в || супервизор || Выполните его.
#!/bin/bash set -x rm -rf /etc/default/locale env >> /etc/default/locale exec "[email protected]"