我们有一个dockerfile为
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/
目录中未复制war文件。
但是我们尝试了以下操作,当我们连接到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
构建图像时
我们认为问题是因为FROM
图片bitnami/tomcat
将该目录用作卷等。这可能是原始bitnami / tomcat图像的代码,尽管我们不确定。
https://github.com/bitnami/bitnami-docker-tomcat/blob/master/9.0/Dockerfile
有关如何将文件添加到tomcat目录的任何想法
答案 0 :(得分:4)
来自Bitnami的Sameer。
问题的确在于Dockerfile
中定义的VOLUME。我们认为这是我们的Dockerfile中的缺陷,我们正在努力解决所有Dockerfiles中的这个问题。
答案 1 :(得分:2)
这是在Dockerfile中定义卷的缺点之一以及I don't recommend defining them there的原因。当您在构建期间尝试修改卷中的文件时,未定义docker的行为,这可能取决于您的docker版本或其他外部变量,因此为了便于携带,最好不要这样做。
由于你正在处理来自另一方的图像,我会向他们提出一个问题,以便删除该行(请随时将它们指向我的博客文章以获得解释)。在此之前,您可以签出their build files from github并更改Dockerfile以构建您自己的基本映像版本。
供参考,这是关于defining a volume in the Dockerfile from docker's docs的说明之一(比如快3倍):
从Dockerfile中更改音量:如果有任何构建步骤 在声明卷之后更改卷内的数据 更改将被丢弃。
答案 2 :(得分:2)
只是想告诉您Bitnami Docker镜像不再在Dockerfile中声明VOLUME
,这样我们的用户就可以更轻松地扩展和自定义docker镜像。希望您发现此更改有帮助。
如果您有任何其他问题,请加入我们的筹码社区http://slack.oss.bitnami.com/。