我试图将我的应用程序部署到docker容器内的tomcat服务器上。 我正在使用Intellj IDEA,我让它使用以下内容: - 配置了JMX的tomcat远程连接器以及我的电脑和容器之间的共享文件夹。
但是我有一个大问题,虽然我有copyXML和deployXML,但是我的应用程序的META-INF中的context.xml没有部署在服务器上
Intellj Idea允许我复制我的上下文版本,它只添加了一个docBase应用程序,但只在我的应用程序中。
如何让我的tomcat服务器复制或部署我的context.xml,我已经定义了数据源?
提前致谢。
答案 0 :(得分:1)
在IDEA 16.3及之前,远程部署到Tomcat会忽略context.xml(这由https://youtrack.jetbrains.com/issue/IDEA-150430涵盖)。
已针对IDEA 17.1进行了修复,因此对于此版本,Tomcat远程运行配置的“远程登台”部分应具有“context.xml”子部分,其中包含“Path from root”字段。
您可以尝试从Docker容器中共享文件夹'< tomcat base> / conf / Catalina / localhost',这样该文件夹和暂存文件夹都将位于同一父文件夹下。
然后你应该在远程登台中指定父文件夹 - >主机设置以及文件夹的相对路径分别为“context.xml”和“Staging”部分中的“Path from root”。
答案 1 :(得分:0)
我已将webapps声明为我图像中的卷,然后在容器启动时将内容复制到该文件夹中。
所以我最终得到一个带有我的默认webapps文件的已安装文件夹。 但是当我使用idea将war和xml部署到webapps文件夹时,它会因为我的上下文未部署而失败。 但是,如果我刚刚在装载的文件夹中重新启动docker with war和xml,那么它可以工作。如果使用IDEA重新部署以使用JMX连接到我的应用程序,它也可以。
但它有点糟糕,静态资源副本对我不起作用,因为路径根目录是“webapps /../”而且我无论如何都找不到它。
我不明白为什么在Docker上使用IDEA进行热部署非常困难。
我想我必须回去使用插件remoteSynchronizer来复制.classes和资源,以保持我的webapp最新,但它远不及Eclipse的FileSync插件。