2017-04-19 116 views
0

將PHP/Wordpress應用程序移植到CloudFoundry時,我們面臨的問題是應用程序依賴於Linux mail命令,默認情況下該命令未安裝在CloudFoundry容器中。CloudFoundry容器安裝linux郵件命令

有沒有辦法讓啓動時運行的應用程序在容器中安裝?

回答

1

最好的解決方案是將您的應用程序轉換爲直接與SMTP服務器通話。有Wordpress插件,可以讓你這樣做。你可能要考慮利用其中之一。我不知道你的情況,但使用它們通常很簡單。

如果這不是一個選項,你基本上需要打包一個mail二進制或腳本與您的應用程序。然後,您可以直接將Wordpress指向該可執行文件,也可以調整PATH環境變量,以便二進制文件位於路徑中,並且Wordpress可以找到它。

在此一對夫婦的注意事項:

  1. 無法安裝RPM或DEB包,因爲你不能得到CF.根訪問你可以做的最好的做法是將你自己的二進制文件和腳本帶到應用程序中(或者寫一個自定義的構建包,但這是更多的工作)。

  2. 您可能可以從Linux系統獲取mail二進制文件,並將其與您的應用捆綁在一起。例如,在虛擬機(運行Ubuntu Trusty或使用cloudfoundry/cflinuxfs2泊塢窗映像)中安裝mail,將mail二進制和從屬共享庫複製到應用程序中的目錄中。推送您的應用,包括那些二進制文件然後,您可以調整PATH和LD_LIBRARY_PATH env變量,以便Wordpress可以找到該命令,並且該命令可以找到它的關聯共享庫。

  3. 如果你不能/不想搞亂#2,你可以用你最喜歡的腳本語言(Python,Perl,Ruby,PHP等)編寫一個腳本,它實現了類似的cli mail命令(剛好足以滿足Wordpress的需求)並直接與SMTP服務器通話。將腳本命名爲mail並將Wordpress指向它或放在PATH上。

  4. 要調整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