При переносе приложения PHP / WordPress на CloudFoundry мы сталкиваемся с проблемой, заключающейся в том, что приложение опирается на Linux. mail
команда, которая не установлена в контейнерах CloudFoundry по умолчанию.
Есть ли способ установить это в контейнере, в котором приложения запускаются при запуске?
Лучшее решение — перевести ваше приложение на прямую связь с SMTP-сервером. Есть плагины WordPress, которые позволят вам сделать это. Вы можете рассмотреть возможность использования одного из них. Я не знаю вашей ситуации, но использовать их часто просто.
Если это не вариант, вам нужно упаковать mail
двоичный файл или скрипт с вашим приложением. Затем вы можете либо указать WordPress на этот исполняемый файл напрямую, либо настроить переменную среды PATH так, чтобы двоичный файл находился на вашем пути, и WordPress мог его найти.
Пара замечаний по этому поводу:
Вы не можете установить RPM или DEB пакеты, потому что не можете получить root-права на CF. Лучшее, что вы можете сделать, — это принести свои двоичные файлы и сценарии вместе с приложением (или написать собственный пакет сборки, но это намного больше работы).
Вы могли бы взять mail
двоичный файл из системы Linux и связать его с вашим приложением. Например, установить mail
в виртуальной машине (работает Ubuntu Trusty или использовать cloudfoundry/cflinuxfs2
изображение докера), скопируйте mail
двоичные и зависимые разделяемые библиотеки в каталог в вашем приложении. Нажмите ваше приложение, включая эти двоичные файлы. Затем вы можете настроить переменные PATH и LD_LIBRARY_PATH env, чтобы WordPress мог найти команду, а команда могла найти связанные с ней общие библиотеки.
Если вы не можете / не хотите связываться с # 2, вы можете написать скрипт на вашем любимом языке сценариев (Python, Perl, Ruby, PHP и т. Д.), Который реализует такой же кли, как mail
Команда (достаточно для удовлетворения потребностей WordPress) и общается напрямую с SMTP-сервером. Назовите сценарий mail
и наведите на него WordPress или вставьте в PATH.
Чтобы настроить переменную среды PATH, вы не хотите использовать cf set-env
, Это потому, что вы можете переопределить только переменные с cf set-env
Вы не можете сделать традиционный PATH=$PATH:/my/new/path
, Чтобы сделать эту работу, вы хотите включить .profile
файл в корне вашего приложения. Это будет получено и получено до запуска вашего приложения, и в него вы можете добавить PATH=$PATH:$HOME/path/to/mail/script
, где /path/to/mail/script
это местоположение того, что вы связываете с вашим приложением, и то, что вы хотите, доступно по пути. Мы префикс это $HOME
так что это указывает на наше приложение.
https://docs.cloudfoundry.org/devguide/deploy-apps/deploy-app.html#profile
Других решений пока нет …