【问题标题】:Update tomcat war file before explode (uncompressed) [duplicate]爆炸前更新tomcat战争文件(未压缩)[重复]
【发布时间】:2016-04-04 20:16:31
【问题描述】:
我的应用程序 WAR 已经有一些设置。我想在部署到 tomcat 容器之前即时更改它们。现在我将它们部署在 /Catalina_base/ 中,启动 tomcat 应用程序,一旦解压缩 WAR,我更新 conf 文件并重新启动 tomcat。在启动 tomcat 之前更新 conf 文件的任何最佳做法?
另外,我如何使用厨师食谱实现这一目标?
非常感谢您的帮助。
【问题讨论】:
标签:
java
tomcat
chef-infra
【解决方案1】:
正如 Chris Nauroth 所说,最佳实践是将特定于环境的配置排除在 WAR 之外。
但是,如果您被该 WAR 中的配置卡住了,那么您可以使用 zip 工具来更新配置文件。
如果您使用的是典型的 Linux 发行版,那么假设您的 WAR 文件名为 application.war,并且您要更新的配置文件是 WEB-INF/classes/com/example/config.properties,那么您可以在启动 Tomcat 之前在部署期间运行这些命令:
unzip application.war WEB-INF/classes/com/example/config.properties
# edit the configuration file now
zip -f -m application.war WEB-INF/classes/com/example/config.properties
在 unzip 命令之后,文件将位于与其在 WAR 中的位置匹配的子文件夹中(例如 WEB-INF/classes/com/example/config.properties),然后第二个 zip 命令会将其从磁盘中删除并放回 WAR。
我不熟悉 Chef,所以我不确定如何在部署过程中自动运行这些命令,但大概它提供了一种像这样直接运行命令的方法。