@Templar3d

Как выполнить еще одну команду в docker?

Есть докер-файл Dockerfile, который начинается на FROM php:7.4-fpm
и заканчивается CMD ["php-fpm"]
Мне нужно, чтобы дополнительно в нем запустилась такая команда:

php /var/www/html/artisan queue:listen --memory=1024 --timeout=1800

Я пробовал

CMD php-fpm && /usr/local/bin/php /var/www/html/artisan queue:listen --memory=1024 --timeout=1800

но поскольку уже выполняется php-fpm, то другая команда не выполняется.
Также пробовал

CMD php-fpm ; /usr/local/bin/php /var/www/html/artisan queue:listen --memory=1024 --timeout=1800

- тоже не работает.

Как запустить в докере, чтобы выполнялись обе команды?
  • Вопрос задан
  • 420 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Это считается не docker-way (правильнее в отдельном контейнере запустить отдельный обработчик очереди), но можно так:

одна команда & другая команда

Можно также сделать скрипт, который всё как надо запустит, и использовать его в качестве cmd. Можно также внедрить в контейнер микросистему управления сервисами типа runit.

Почему считается, что плохо так делать? Если php-fpm упадёт, то весь контейнер упадёт и может перезапуститься автоматом. А если упадёт второй сервис, то контейнер будет работать как ни в чём не бывало.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
R0dger
@R0dger
Laravel/Yii/2 AngularJs PHP RESTful API
Установите внутри контейнера Supervisor и уже в нем описывайте Ваши команды.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы