我有一个打包为war文件的Web应用程序,它在Liberty容器中部署到Bluemix . 应用程序将配置信息存储在Web应用程序文件夹之外的目录集合中,并在初始安装期间将默认文件复制到该位置 . 当我将其部署为简单的默认war文件时,将默认文件复制到此位置时出错 . 由于Liberty没有将战争爆炸到目录(defaultServer / apps / idmu.war)并使用了服务器目录部署,如下所示:https://www.ng.bluemix.net/docs/starters/liberty/index.html#optionsforpushinglibertyapplications__ServerDirectory
使用的server.xml
<server>
<featureManager>
<feature>jsp-2.3</feature>
</featureManager>
<httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="8080" />
<application name="idmu" context-root="/" type="war" location="idmu.war"/>
</server>
使用以下命令重新发布应用程序后
cf push idmu -p defaultServer
应用程序重新启动,我仍然收到文件复制错误,所以我怀疑它是目标目录和导致问题的权限 . 任何有关在何处找到此目录以及如何设置权限的帮助都非常感谢 .
1 回答
您应该在/ home / vcap /上具有写入权限,这是buildpack容器中的主目录 . 例如,/ wlp位于/ home / vcap / app / wlp .
Cloud Foundry(所以Bluemix)作为一个概念,是暂时的 . 它专为Cloud Native应用程序而设计,因此如果您需要持久存储,您应该需要Object Store等服务或目录中的其他选项来保留此类信息 . 一些想法:http://12factor.net/config
您可以在开发模式下启动Liberty Buildpack:https://developer.ibm.com/bluemix/2015/06/16/liberty-buildpack-app-management-support/,这样您就可以访问shell,但不确定是否可以编辑 . 正如我上面评论的那样,由于文件系统是暂时的,因此不是一个好主意 .
另一个解决方案是在之前编辑这些文件并将其作为完整应用程序的一部分进行部署 .