我们有一个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/
未复制战争文件的目录。
但是我们尝试了以下操作,并且当我们连接到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中定义卷的缺点之一,也是我不建议在其中定义它们的原因。当您尝试在构建期间修改卷中的文件时,docker的行为是不确定的,它可能取决于您的docker版本或其他外部变量,因此对于可移植性而言,最好不要这样做。
由于您正在使用来自另一方的图像,因此我将与他们提出一个问题以删除该行(可以将其指向我的博客文章以获取解释)。在此之前,您可以从github检出其构建文件,并更改Dockerfile以构建您自己的基础映像版本。
作为参考,这是关于从docker的文档中在Dockerfile中定义卷的说明之一(说快了3倍):
从Dockerfile内更改卷:如果在声明了卷后有任何构建步骤更改了卷中的数据,则这些更改将被丢弃。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句