繁体   English   中英

COPY和ADD在Dockerfile中不起作用

[英]COPY and ADD not working in Dockerfile

我们有一个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目录的任何想法

来自Bitnami的Sameer。

确实存在于Dockerfile定义的VOLUME问题。 我们认为这是我们的Dockerfile中的缺陷,我们正在努力解决所有Dockerfiles中的这个问题。

这是在Dockerfile中定义卷的缺点之一,也是我不建议在那里定义它的原因之一。 当您在构建期间尝试修改卷中的文件时,未定义docker的行为,这可能取决于您的docker版本或其他外部变量,因此为了便于携带,最好不要这样做。

由于你正在处理来自另一方的图像,我会向他们提出一个问题,以便删除该行(请随时将它们指向我的博客文章以获得解释)。 在此之前,您可以从github检出他们的构建文件,并更改Dockerfile以构建您自己的基本映像版本。

作为参考,这里是关于从Docker文档定义Dockerfile中的卷的一个注释(比如说快3倍):

从Dockerfile中更改卷:如果任何构建步骤在声明后更改卷内的数据,那么这些更改将被丢弃。

只想告诉您Bitnami Docker镜像不再在Dockerfile中声明VOLUME ,这样我们的用户就可以更轻松地扩展和自定义docker镜像。 希望您发现此更改有帮助。

如果您有任何其他问题,请访问我们的堆栈社区http://slack.oss.bitnami.com/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM