复制和添加不在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/ 。