我有一个使用Swisscom托管的Cloud Foundry应用程序。我需要该应用程序提供的功能之一是,用户可以设置Cloud Foundry服务-特别是Swisscom Secrets-Store服务。但是,事实证明这是一个挑战。
首先,我使用cloudfoundry-cli NPM模块从我的应用程序创建服务,就像提供的示例一样:
const cf = require('cloudfoundry-cli')
cf.provisionService({
name: 'mongoNo1',
type: 'compose-for-mongodb',
plan: 'Standard'
}, function(err) {
if (err) return console.log(err)
console.log('Service provisioned')
})
当我在本地运行我的应用程序时,此方法运行良好,因为显然我的计算机上安装了CF CLI。但是,当我将应用程序推送到Swisscom并尝试创建服务时,没有发生任何事情,因为CF CLI未安装在应用程序上。
我还签出了cf-nodejs-client,如果不想安装CF CLI,建议通过传递Cloud Foundry登录详细信息和API端点来建议。但是,我已经检查了文档,并且似乎该NPM模块不允许您创建服务。 documents显示您可以getService,getServicePlans,getServices或删除-没有创建选项。
最坏的情况是我可以通过SSH进入正在运行的应用程序并安装CF CLI,但为此,您需要无法进行root访问。
我的问题是-推送时是否可以在应用程序上安装CF CLI?也许可以在推送应用程序时安装CF CLI的buildpack?我已经检查了社区构建包的列表,但似乎不存在,我也不知道从哪里开始创建。否则,没有人知道如何在不需要CF CLI的情况下从Node应用程序创建Cloud Foundry服务。
答案 0 :(得分:1)
是否可以在推送应用程序时在应用程序上安装CF CLI?
一种选择是将cf cli与您的应用程序捆绑在一起。这是一个静态二进制文件,因此很容易与您的应用程序捆绑在一起。以下应该起作用。
mkdir bin/
,然后将二进制文件从步骤#1移至bin/
文件夹。.profile
文件添加到应用程序的根目录。在该文件中,放入export PATH=$PATH:$HOME/bin
,这会将步骤#2中的bin/
目录放在PATH上(将bin
更改为您命名该文件夹的名称)。现在cf push
您的应用程序。这将包括二进制文件。启动时,将执行.profile
脚本,并将您的cf
二进制文件的路径放在PATH上。因此,您可以在容器中运行cf ...
命令。
希望有帮助!