我如何让tomcat从目录中自动部署WAR文件,但仍使用原始appBase目录

问题描述 投票:3回答:2

我需要在嵌入式解决方案中部署我的应用程序(在rapiberry pi零上运行)。因此,我只能在localhost上部署东西。我对虚拟主机不太熟悉,因此我对此可能是错的。

我的问题是,我希望tomcat自动部署克隆到树莓派git仓库中的war文件。这样一来,可以轻松地在git存储库上进行更新,而不必与管理器打交道。话虽如此,我还希望使默认Webapps目录中包含的管理器和其他管理工具保持活动和运行状态。我不想将它们复制到git存储库中,因为它们将被放错位置并保存在存储库中,这是不必要的。此外,我想让tomcat“分解”或提取原始webapps目录中的WAR文件,以免将这些文件添加到git存储库中。

基本上,我希望能够自动部署某个目录中的所有war文件,而无需实际写入该目录,同时还能自动部署“标准” webapps目录中的war文件。

这可能吗?

我正在使用tomcat9

java raspberry-pi tomcat9 java-ee-8 raspberry-pi-zero
2个回答
1
投票

解决方案A:

Tomcat 9仅具有一个appBase属性,默认情况下为webapps。为了更改,您需要配置2 Common attributes

1.appBase:将此参数设置为需要部署战争的文件夹。2.autoDeploy:确保将其设置为true。

不可能有2个appbase目录。因此,原始的Web应用程序将无法用于自动部署。

解决方案B:

使用脚本从GIT存储库中提取WAR,这还将把文件复制或移动到Tomcat9的标准webapps文件夹中。例如

git pull rm path/to/tomcat/webapps/warname.war  
mv warname.war
path/to/tomcat/webapps

解决方案C:

将您的GIT存储库或其他GIT存储库配置为仅包含具有所需战争的webapps文件夹。如果仅使用此文件夹从GIT存储库中拉开战幕,则无需提交默认的Tomcat应用程序。请参阅以下步骤。从vanilla Tomcat 9安装开始

  1. webapps重命名为webappsOriginal

  2. 克隆webapps信息库,以便现在创建另一个webapps文件夹,仅包含war。

  3. webappsOriginal的所有内容移动到webapps

  4. 删除webappsOriginal

现在,如果您从存储库中提取更新的战争,将自动进行部署。没有理由在您的GIT中添加,提交或推送现有文件。


1
投票

如何使用“ inotify”监视克隆存储库中的war目录,如果它发生更改,请将war复制到tomcat的“ webapps”中,这将自动部署更改后的应用程序。您可以为此安装inotify-tools。有关更多信息,请检查here

© www.soinside.com 2019 - 2024. All rights reserved.