从托管的Cloud Foundry应用程序创建Cloud Foundry服务

时间:2019-06-04 10:28:29

标签: cloudfoundry swisscomdev

我有一个使用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服务。

1 个答案:

答案 0 :(得分:1)

  

是否可以在推送应用程序时在应用程序上安装CF CLI?

一种选择是将cf cli与您的应用程序捆绑在一起。这是一个静态二进制文件,因此很容易与您的应用程序捆绑在一起。以下应该起作用。

  1. here下载Linux版cf cli并解压缩。
  2. 将其放入应用程序根目录下的文件夹中。例如:mkdir bin/,然后将二进制文件从步骤#1移至bin/文件夹。
  3. .profile文件添加到应用程序的根目录。在该文件中,放入export PATH=$PATH:$HOME/bin,这会将步骤#2中的bin/目录放在PATH上(将bin更改为您命名该文件夹的名称)。

现在cf push您的应用程序。这将包括二进制文件。启动时,将执行.profile脚本,并将您的cf二进制文件的路径放在PATH上。因此,您可以在容器中运行cf ...命令。

希望有帮助!