我正在尝试部署位于我的主机操作系统(Windows 10)中的Java Web应用程序,并且我想将提到的webapp作为Tomcat Docker Container(位置/usr/local/tomcat/webapps/mywebapp
)下的目录安装。 / p>
我在Docker终端中运行以下命令(Windows中我的webapp的绝对路径)。注意:" mywebapp"主机目录已包含部署/未压缩的战争。
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 Container文件夹里面有几个默认的webapps,包括" mywebapp"夹。问题是它是空的,因此webapp无法正常工作。
我想用它来将我的应用程序集成到Eclipse IDE和Docker中,并在我通过IDE进行更改时实现重新部署应用程序。
有什么见解?
提前致谢。
答案 0 :(得分:0)
如果要对每个文件进行热部署更改,则无法使用远程应用程序服务器执行此操作。原因是eclipse无法控制tomcat进程。
现在一种可行的解决方法是生成一个webapp,它为交付项的副本生成一个卷,这样在进行更改后,您可以构建应用程序并再次安装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卷被取消并且不会再次刷新。
使用对保存操作执行挂钩的插件自动执行部署:
How do I start Maven "compile" goal on save in Eclipse?
我不推荐它,因为你一直运行maven并且它消耗了大量的cpu。也许写一个本地脚本来做它。
答案 1 :(得分:0)
感谢您的时间和答案,非常有帮助,我真的很感激。
我期望一种更简单的方法来集成它,但似乎没有直接的解决方案。
顺便说一句,我发现为什么webapp目录在Tomcat Docker容器中总是空的,似乎我的webapp主机路径(Windows)必须在我的用户目录下,类似这样/ c / users / username /documents/....../eclipseWorkspace/mywebappProject/target/mywebapp。
目前我认为我将启用远程调试,因此每当我修改Java类时都会更换热代码,稍后会看到可以对其他类型的文件执行的操作。
关于你在maven删除目标文件夹时提到的问题,如果我从Eclipse运行maven clean(如你所说),我已经检查过webapp是否已脱离,但如果我进行maven安装,它会再次出现在Tomcat中Docker Container,所以也许并不是那么糟糕。