Задать вопрос

Как в одном контейнере (php) вызвать другой?

Есть вполне стандартный docker-compose: nginx, db, php, composer. Сайт обрабатывается контейнером с php 7.4 В этом контейнере запускается скрипт со кодом exec_shell('php -f somescript.php'). Возможно ли запустить php -f somescript.php через контейнер с другой версий php, т.е. отдельный от запускаемого? В общем запуск приложения в одном контейнере из другого.
  • Вопрос задан
  • 337 просмотров
Подписаться 3 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 3
danilinem
@danilinem
Есть два способа это сделать:
1. Примонтировать (или использовать http api) сокет Докера (/var/run/docker.sock) внутрь контейнера, и управлять контейнерами Хост машины, или использовать библиотеку. !!!КРАЙНЕ НЕ РЕКОМЕНДУЮ!!!
2. Использовать Dind (docker in docker) образ и уже на него поставить PHP и создавать дочерние контейнеры. НЕ РЕКОМЕНДУЮ
В целом стоит пересмотреть инфраструктуру и архитектуру приложения для решения этой задачи, более безопасно и лаконично.
Ответ написан
@great_77
Обратившись по http.
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега PHP
♬♬
Думаю, стоит поднять отдельный Docker-контейнер с нужной версией PHP, и обращаться к нему.

По протоколу HTTP – в родительском PHP скрипте обычным curl или школьным file_get_contents() дергать некий локальный URL.

Это может быть RoadRunner или дергать уже существующий в другом контейнере NGINX, который обращения на определённый URL передаст не в основной PHP-FPM, а в тот, с другой версией.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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