我们所知道的事情:
当war文件复制到/ opt / tomcat / webapps /文件夹中时,tomcat会将其解压缩并创建一个文件夹,其中包含war中的所有文件。假设我正在复制xyz.war文件,因此将在/ opt / tomcat / webapps / path下创建一个新的文件夹xyz。
我们想要实现的目标,但正在发生的事情:
我们正在使用Docker和Openshift在Linux服务器上创建容器。我们创建了一个Dockerfile,使用它来将xyz.war复制到/ opt / tomcat / webapps文件夹中。这很好用。此外,战争被解压缩并且正确创建了xyz文件夹。
但是,现在我们要在/ opt / tomcat / webapps / xyz文件夹中的不同位置复制一些其他配置文件。例如。一些文件将转到/ opt / tomcat / webapps / xyz路径,一些将转到/ opt / tomcat / webapps / xyz / WEB-INF路径,有些将转到/ opt / tomcat / webapps / xyz / WEB-INF / classes path。
在Dockerfile中,我们使用'ADD' command将配置文件从源位置复制到上面的目标位置。当我们这样做时,文件会被正确复制。但是,无论文件最初存在于/ opt / tomcat / webapps / xyz文件夹中,即提取xyz.war文件,所有这些文件都会立即自动删除。
观察:
如果我使用ADD命令复制其他文件夹中的文件,例如。 opt / tomcat / conf,然后现有文件不会被删除。只有当我复制war的提取/输出文件夹/ opt / tomcat / webapps / xyz中的文件时,现有文件才会被删除。
因此,我相信ADD命令按预期工作,但tomcat中有一些东西可能识别web应用程序文件夹xyz中的更改并重置所有内容(并且只保留最新复制的文件)。
我们尝试了什么:
我们尝试过不同的序列:
首先复制war文件,以便首先创建xyz文件夹。然后在xyz文件夹中复制其他配置文件。
首先复制其他配置文件,然后复制war文件。
但是,在上述两个选项中,只保留其他配置文件,并删除war的解压缩文件。
问题:
任何人在任何情况下(无论是否使用Dockerfile / Openshift)都能观察到这种想法? tomcat的任何配置都可以自动完成吗?如何防止它发生?
注意:我无法在'xyz.war'中添加所需的配置文件,因为它们会因不同的环境而异,而xyz.war是一个通用的包。因此,在战争部署之后,我必须在xyz文件夹中手动复制几个必需的配置文件。