我正在尝试部署一个位于我的主机操作系统(Windows10)中的Java Web应用程序,并且我想将提到的webapp作为一个目录挂载到Tomcat Docker Container (location /usr/local/tomcat/webapps/mywebapp
)下。
我在Docker终端运行以下命令(我的webapp在Windows中的绝对路径)。注意:"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 Container文件夹中有几个默认的webapp,包括"mywebapp“文件夹。问题是它是空的,所以webapp不能工作。
我想使用它将Eclipse IDE中的应用程序与Docker集成,并在通过IDE进行更改时实现应用程序的重新部署。
有什么见解吗?
提前谢谢。
发布于 2017-06-01 03:11:41
感谢您的时间和您的答案,非常有帮助,我真的很感激。
我希望有一种更简单的方法来集成它,但似乎没有直接的解决方案。
顺便说一下,我发现为什么在Tomcat Docker Container中webapp目录总是空的,似乎我的webapp主机路径(Windows)必须在我的用户目录下,类似于下面的/c/users/username/documents/....../eclipseWorkspace/mywebappProject/target/mywebapp.
目前,我认为我将启用远程调试,因此每当我修改Java类时,我都会使用热代码替换,稍后再看看可以对其他类型的文件做些什么。
关于你提到的当maven删除目标文件夹时的问题,我已经检查了如果我从Eclipse运行maven clean (正如你所说的),webapp是分离的,但是如果我做maven安装,它会再次出现在Tomcat Docker Container中,所以可能没有那么糟糕。
发布于 2017-05-31 05:06:11
如果您希望在每个文件发生更改时都进行热部署,则不可能在远程应用服务器上执行此操作。原因是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
在宿主中,您必须在项目外部将"war“复制到应用程序的目标。这是必要的,因为当maven删除目标文件夹时,docker卷是断开的,并且不会再次刷新。
要使用执行hook over the save操作的插件自动部署:
How do I start Maven "compile" goal on save in Eclipse?
我不推荐这样做,因为您总是运行maven,而且它会消耗大量的cpu。也许可以写一个本地脚本来做这件事。
https://stackoverflow.com/questions/44248643
复制相似问题