2016-10-10 79 views
1

我正在使用将部署到CloudFoundry的grails应用程序。 CloudFoundry在目录的根目录使用manifest.yml文件。当推送应用程序时,该文件由CF提取。如何使用外部manifest.yml打包战争

我可以通过这个manifest.yml外部?当我将WAR文件发送给客户端时,我不想运送我在开发中使用的manifest.yml,并且不希望客户端使用它们的manifest.yml版本重建应用程序

CF支持传递WAR文件外部的manifest.yml吗?

+0

不确定您的意思是“通过外部清单文件”。您不能将您的客户的WAR文件加上您的清单模板,要求客户只填写特定于其环境的事物,例如证书? –

+0

清单是WAR文件的一部分,对吗?因此,如果我将WAR文件发送给客户,他们需要更改manifest.yml中的某些内容(例如凭据)......他们将如何执行此操作?提取WAR,更改清单。yml,并再次打包?从代码发布的角度来看这似乎非常低效。 – Anthony

+0

这是一个场景:我的应用使用第三方web服务,因此它需要该web服务的URL。我在'manifest.yml'中传递这个URL的值作为用户定义的环境变量。我打包应用程序并发送一个文件(WAR文件)到客户端。在客户端,第三方应用的URL略有不同。客户做什么?或者,CF是否认为这是我作为一名应用程序开发人员的工作,可以提供生产值?外部化这些类型的文件是常见的做法。 – Anthony

回答

0

CloudFoundry在目录的根目录使用manifest.yml文件。当推送应用程序时,该文件由CF提取。

这是不正确的。如果存在,cf cli将在当前目录中选取一个manifest.yml文件。这是默认位置。您也可以使用cf push -f path/to/manifest.yml指定一个位置。

http://docs.cloudfoundry.org/devguide/deploy-apps/manifest.html#find-manifest

是否有可能对我来说,通过这个manifest.yml外部?

这是做到这一点的唯一方法。除非你想在WAR文件中放入manifest.yml,否则请让用户运行unzip并提取文件。 cf cli不会查看您的WAR文件中的manifest.yml。如果没有来自manifest.ymlpath条目,它甚至可能找不到您的WAR文件。

CF支持传递WAR文件外部的manifest.yml吗?

该平台不提供共享manifest.yml文件的任何功能。你如何把这个给你的顾客取决于你。

正如上述评论中所述,您可能希望将功能manifest.yml的模板发送给您的客户,或提供有关客户如何创建manifest.yml的说明。客户的环境可能会有所不同。例如,他们可能需要不同的主机&域名,或者他们可能绑定不同的服务。

另一种选择是发送部署脚本。部署脚本尽管比较复杂,但可能会更智能一些,因为它可以使用cf来查询信息并尝试自动设置更多的东西。例如,您的应用程序是否需要服务?自动创建一个的部署脚本,这是您无法使用manifest.yml文件(它只能绑定现有服务)执行的操作。

希望有帮助!