Как обратиться к внешнему программному пакету изнутри docker контейнера?
Есть docker-compose.yml с php и nginx, программный пакет с командой <имя_команды>, установленный через yum, и скрипт index.php вида: exec("<имя_команды>2>&1");
Запускаю докер: docker-compose up -d
Открываю index.php в браузере и ничего, конечно, не происходит. Как исправить?
тогда надо его "прокинуть" внутрь.
вот как у Вас конфиг php прокинут
- "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
тогда он станет доступным внутри контейнера. На сколько я понимаю связь nginx-php, класть надо в контейнер к php.
да, еще учтите, одного бинаря может быть мало, он может захотеть видеть и какие-то либы. Возможно правильнее будет собрать свой образ с этим пакетом, делов на 5 минут
но тогда пакет внутри контейнера и снаружи могут разъехаться при обновлении
А разве смысл докера не в том, чтобы ограничивать взаимодействие с внешними ресурсами?
Вам нужно программный пакет устанавливать в контейнер и уже после этого с ним работать.
Александр, конечно одна из постулируемых главных фичей контейнеризации это самодостаточность контейнера.
однако возможность на этапе отладки что-то подложить в контейнер или поправить в нем руками вместо пересборки каждый раз зачастую ОЧЕНЬ ускоряет процесс. К слову чем принципиально отличается конфиг или данные БД, монтируемые снаружи, от бинаря? что без первого, что без второго работа контейнера будет либо невозможна, либо сильно отличаться от варианта С файлом-конфигом-данными
vldud, git в этом образе лежит в /usr/bin/git.
так что тогда уж
volumes:
- "/usr/bin/git:/usr/bin/git"
но это наверняка не заработает, либ не хватит
сделайте уже Dockerfile
FROM nanoninja/php-fpm:7.2.2-fpm