是否可以从已在Cloud Foundry中运行的其他应用程序创建应用程序并将其推送到Cloud Foundry?基本上我需要做一个推送'从申请中。
我看到我可以使用Cloud Foundry API(https://apidocs.cloudfoundry.org/237/apps/creating_an_app.html)。谁能举个例子呢?
答案 0 :(得分:2)
Cloud Foundry Java Client专为此类用例而设计。它负责协商CF API使用的OAuth2安全性,并为需要多个CF API调用的常见操作提供了很好的抽象(例如,推送应用程序,包括创建应用程序元数据,推送位,以及启动应用程序)。我更喜欢这个选项而不是使用Java来发送到cf
CLI,因为您可以更好地控制CF API,并且不会使CLI UI检测成功/失败。
没有什么可以阻止应用程序在CF上运行推送其他应用程序,但该平台也没有做很多事情来帮助解决这个问题。具体而言,您需要CF API端点的地址(例如http://api.mycf.example.com)才能定位,验证和部署应用。但是,在CF上运行的应用程序无法知道正在运行的CF的API端点。因此,您需要将CF API端点配置到将推送其他应用程序的应用程序中。
答案 1 :(得分:1)
TL; DR是的,这是可能的。向CF cli外壳。
最简单的方法是在您的应用程序中包含CF cli,并将其外壳用于推送您的应用程序。您必须确保您使用的二进制文件与运行应用程序的操作系统匹配(最有可能是Ubuntu 14.04)。但是这样,你可以只提供用户的CF凭证,并使用CLI中的cf push
逻辑。
您可以使用CloudFoundry API,但我建议不要使用它。尝试验证并推送cf应用程序将是棘手的。 cf push
做了很多工作 - 它不仅通过您找到的API端点创建应用程序,而且还以智能方式上传应用程序文件,它将路由和服务附加到应用程序,启动应用程序,轮询CF API以获取有关分段任务状态等的更新。您必须自己实现所有这些(更不用说OAuth2工作流来获取身份验证令牌)。
您可能会发现某些第三方CF库很有用(取决于您使用的语言):
最后,CloudFoundry cli是开源的(https://github.com/cloudfoundry/cli)。请记住,如上所述,push
逻辑包含多个操作,因此代码库可能很难理解。