![](/img/trans.png)
[英]Maven copying Tomcat JARs into webapp WEB-INF/lib directory
[英]Tomcat Docker Container: host webapp directory mounted as container webapp directory
我正在尝试部署位于主机OS(Windows 10)中的Java Web应用程序,并且我想将提到的webapp作为目录安装在Tomcat Docker Container下(位置/usr/local/tomcat/webapps/mywebapp
)。
我在Docker终端(Windows中我的webapp的绝对路径)上运行以下命令。 注意:“ mywebapp”主机目录已经包含已部署/未压缩的war。
docker run --name=tomcat_7_0_78 --detach --publish 8080:8080 -v /c/desarrollo/workspace/webMavenTest/target/mywebapp:/usr/local/tomcat/webapps/mywebapp tomcat:7.0.78
我可以看到Tomcat启动,并且webapps容器文件夹中有几个默认的webapp,包括“ mywebapp”文件夹。 问题是它为空,因此webapp无法正常工作。
我想用它来将我的应用程序与Docker集成在Eclipse IDE中,并在通过IDE进行更改时实现重新部署该应用程序。
有见识吗?
提前致谢。
如果要热部署每个文件更改,则无法使用远程应用程序服务器来进行。 原因是eclipse无法控制tomcat进程来执行此操作。
现在,一种可能的解决方法是生成一个Web应用程序,该Web应用程序生成可交付成果的副本的卷,以便进行更改后,您可以构建应用程序并再次安装tomcat。
它看起来应该像这样:
docker run --name = tomcat_7_0_78 --detach --publish 8080: 8080 -v /path/to/copy/war/app.war:/usr/local/tomcat/webapps/app.war tomcat: 7.0.78
在主机中,您必须将项目外部的“战争”副本复制到应用程序的目标。 这是必要的,因为当maven删除目标文件夹时,docker卷将被分离并且不会再次刷新。
要使用执行挂钩保存操作的插件来自动化部署,请执行以下操作:
我不建议这样做,因为您一直在运行Maven,并且会消耗大量的CPU。 也许写一个本地脚本来做到这一点。
感谢您的时间和回答,非常有帮助,非常感谢。
我期望有一个更简单的方法来集成此方法,但是似乎没有直接的解决方案。
顺便说一句,我发现了为什么在Tomcat Docker Container中webapp目录始终为空的原因,看来我的webapp主机路径(Windows)必须位于用户目录下,例如/ c / users / username / documents / ...... / eclipseWorkspace / mywebappProject /目标/ mywebapp。
目前,我认为我将启用远程调试,因此每当我修改Java类时都会进行热代码替换,以后再看看其他类型的文件可以做什么。
关于您在maven删除目标文件夹时提到的问题,如果已经从Eclipse运行maven clean(如您所说),我已经检查了webapp是否已断开连接,但是如果执行maven安装,它将再次出现在Tomcat Docker Container中,所以也许还不错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.