COPY 和 ADD 在 Dockerfile 中不起作用
COPY and ADD not working in Dockerfile
我们有一个 docker 文件作为
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 目录的任何想法
这是在 Dockerfile 中定义卷的缺点之一,也是 I don't recommend defining them there 的原因。 docker 的行为在您尝试在构建期间修改卷中的文件时未定义,它可能取决于您的 docker 版本或其他外部变量,因此为了可移植性,最好的办法是不要这样做它。
由于您使用的是另一方的图片,我会向他们提出问题以删除该行(请随时将他们指向我的博客 post 以获取解释)。在此之前,您可以签出 their build files from github 并更改 Dockerfile 以构建您自己的基础映像版本。
供参考,这是关于 defining a volume in the Dockerfile from docker's docs 的注释之一(说快 3 倍):
Changing the volume from within the Dockerfile: If any build steps
change the data within the volume after it has been declared, those
changes will be discarded.
来自 Bitnami 的 Sameer。
问题确实出在 Dockerfile
中定义的 VOLUME。我们认识到这是我们的 Dockerfile 中的一个缺陷,我们正在努力解决我们所有 Dockerfile 中的这个问题。
只是想通知您,Bitnami Docker 图像不再在 Docker 文件中声明 VOLUME
,这样我们的用户可以更轻松地扩展和自定义 docker 图片。希望您发现此更改有帮助。
如果您有任何其他问题,请加入我们的堆栈社区 http://slack.oss.bitnami.com/。
我们有一个 docker 文件作为
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 目录的任何想法
这是在 Dockerfile 中定义卷的缺点之一,也是 I don't recommend defining them there 的原因。 docker 的行为在您尝试在构建期间修改卷中的文件时未定义,它可能取决于您的 docker 版本或其他外部变量,因此为了可移植性,最好的办法是不要这样做它。
由于您使用的是另一方的图片,我会向他们提出问题以删除该行(请随时将他们指向我的博客 post 以获取解释)。在此之前,您可以签出 their build files from github 并更改 Dockerfile 以构建您自己的基础映像版本。
供参考,这是关于 defining a volume in the Dockerfile from docker's docs 的注释之一(说快 3 倍):
Changing the volume from within the Dockerfile: If any build steps change the data within the volume after it has been declared, those changes will be discarded.
来自 Bitnami 的 Sameer。
问题确实出在 Dockerfile
中定义的 VOLUME。我们认识到这是我们的 Dockerfile 中的一个缺陷,我们正在努力解决我们所有 Dockerfile 中的这个问题。
只是想通知您,Bitnami Docker 图像不再在 Docker 文件中声明 VOLUME
,这样我们的用户可以更轻松地扩展和自定义 docker 图片。希望您发现此更改有帮助。
如果您有任何其他问题,请加入我们的堆栈社区 http://slack.oss.bitnami.com/。