复制和添加不在Dockerfile中工作

我们有一个dockerfile as

FROM bitnami/tomcat EXPOSE 8080 EXPOSE 8009 ADD values.war /opt/bitnami/tomcat/data/ 

除了values.war文件以外,似乎永远不会添加

 docker exec -it values /bin/bash 

并检查/opt/bitnami/tomcat/data/目录的战争文件没有被复制。

然而,我们尝试了以下,当我们连接到docker容器的文件被复制

 FROM bitnami/tomcat EXPOSE 8080 EXPOSE 8009 RUN mkdir -p /var/app ADD values.war /var/app 

所以这导致我们认为这个问题是在目录中,因此我们尝试了以下内容

 FROM bitnami/tomcat EXPOSE 8080 EXPOSE 8009 RUN ls -l /opt/bitnami/tomcat/data/ 

这给了输出

 ls: cannot access /opt/bitnami/tomcat/data/: No such file or directory 

当build立图像

我们认为这个问题是因为FROM image bitnami/tomcat使用该目录作为一个卷或类似的东西。 这可能是原始bitnami / tomcat图像的代码,尽pipe我们不确定。

https://github.com/bitnami/bitnami-docker-tomcat/blob/master/9.0/Dockerfile

任何想法如何将文件添加到tomcat目录

这是在Dockerfile中定义一个卷的缺点之一,也是我不推荐在那里定义它的原因之一。 Docker的行为在构build过程中尝试修改卷中的文件时未定义,可能取决于您的docker版本或其他外部variables,因此为了便于携带,最好不要这样做。

既然你正在处理来自另一方的图像,我会向他们提出一个问题,以便删除该行(可以随意将它们指向我的博客文章以进行解释)。 直到发生这种情况,你可以从github检出他们的构build文件,并更改Dockerfile来构build你自己的基础镜像版本。

作为参考,下面是关于从Docker的文档中定义Dockerfile中的卷的说明之一(比如,快3倍):

更改Dockerfile中的音量:如果任何构build步骤在声明后更改了音量内的数据,则这些更改将被丢弃。

来自Bitnami的Sameer在这里。

这个问题确实是在Dockerfile定义的VOLUME。 我们认识到这是Dockerfile中的一个缺陷,我们正在努力解决所有Docker文件中的这个问题。

只是想通知您,Bitnami Docker镜像不再在Dockerfile中声明VOLUME ,这使得我们的用户可以更容易地扩展和自定义泊坞窗镜像。 希望你发现这个改变有帮助。

如果您还有其他问题,请join我们的社区http://slack.oss.bitnami.com/