非常抱歉,如果这是一个明显的问题。但是我有一个依赖于CLI工具的webapp来使它工作。我想知道是否有一种方法可以在不使用自定义buildpack的情况下指定它。如果可能的话,如何做到这一点
对此有任何帮助都很棒,谢谢
您可以将CLI工具添加到Cloud Foundry应用程序吗?
用apt
或apt-get
直接安装东西是不可能的。您的应用以非特权用户身份运行,无法运行这些工具来安装内容。
这为您提供了几个选项:
binaries/
这样的文件夹,其子文件夹为bin/
和lib/
。
将所有二进制文件放在binaries/bin
下,以及binaries/lib
下所需的任何共享库。
在应用的根目录添加.profile
文件。这将在您的应用程序启动之前获取,因此它会将您捆绑的任何二进制文件放在路径上,并将库添加到搜索路径中。
在.profile
中提出以下内容:
export PATH=$HOME/binaries/bin:$PATH
export LD_LIBRARY_PATH=$HOME/binaries/lib:$LD_LIBRARY_PATH
那应该是它。只需使用所有新文件推送您的应用即可。apt
安装所需的依赖项。您只需要将apt.yml
文件添加到应用程序的根目录并使用multi-buildpacks运行您的应用程序(首先是apt buildpack,然后是普通的buildpack)。
这样做的主要好处是您不必管理依赖项。 apt buildpack将自动从你告诉它使用的repo安装它们,所以它也会从那里获取新版本。如果你需要安装的东西有很多依赖项,这是很好的,特别是敏感的依赖项(比如openssl)或者像其他语言运行时(Python,Perl,Ruby等等)经常更新/修补的依赖项。
其他福利。它更容易,因为buildpack负责调整PATH和LD_LIBRARY_PATH。它还使应用程序大小更小,因此推送速度更快。
这个选项的缺点是apt-buildpack不是官方的buildpack(它的社区维护)。当您可以访问Internet时它也最有效,因此它可以从Internet下载二进制文件,但您可以使用内部存储库来解决此问题。还有其他几个选项,但我不推荐它们,除非上面的两个选项绝对不适合你。
cf push
Docker镜像到CF.这样做的缺点是你失去了使用buildpacks的优势,因此你需要自己构建和管理Docker镜像以及所有必需的应用程序依赖项。希望有所帮助!