2017-04-26 119 views
1

我正在尝试将我的应用程序部署到Docker容器内的Tomcat服务器。 我正在使用Intellj IDEA,并将它与以下设备配合使用: - JMX配置的tomcat远程连接器,以及我的电脑和容器之间的共享文件夹。Tomcat与Intellj远程部署IDEA

但我有一个很大的问题,那就是位于我的应用程序的META-INF context.xml中没有部署在服务器上,虽然我有copyXML和deployXML

Intellj理念让我复制一个版本在我的上下文中,它添加了一个docBase应答器,但只在我的应用程序中。

我怎样才能让我的tomcat服务器复制或部署我的context.xml,在哪里定义了我的数据源?

在此先感谢。

回答

1

在IDEA 16.3及之前的版本中,远程部署到Tomcat会忽略context.xml(这由https://youtrack.jetbrains.com/issue/IDEA-150430覆盖)。

它已被修复为IDEA 17.1,因此对于此版本,Tomcat远程运行配置的“远程登台”部分应该具有'context.xml'子部分和'从根路径'字段。

您可能会尝试从Docker容器共享文件夹'< tomcat base >/conf/Catalina/localhost',因此此文件夹和暂存文件夹将位于同一父文件夹下。

然后,您应该分别在远程登台 - >主机设置中指定父文件夹,并在文件夹的相对路径中分别指定为'context.xml'和'Staging'部分中的'根路径'。

0

我已经将webapps声明为图像中的卷,然后在容器启动时将内容复制到该文件夹​​中。

所以我最终用我的默认webapps文件安装文件夹。 但是,当我将idea和xml部署到webapps文件夹时,它失败了,因为我的上下文没有部署。 但是,如果我只是重新启动码头与我的战争和XML仍然在挂载的文件夹,然后它的作品。如果使用IDEA重新部署以使用JMX连接到我的应用程序,它也可以工作。

但它有点烂,而静态资源的副本不适合我,因为路径根目录是“webapps /../”,而我仍然无法找到改变它的地方。

我不明白为什么在Docker上使用IDEA进行热部署非常困难。

我想我必须回去使用插件remoteSynchronizer来复制.classes和资源,以保持我的web应用程序是最新的,但它远不如Eclipse的FileSync插件。