Mil*_*daD 5 tomcat bitnami docker
我们有一个dockerfile作为
FROM bitnami/tomcat
EXPOSE 8080
EXPOSE 8009
ADD values.war /opt/bitnami/tomcat/data/
Run Code Online (Sandbox Code Playgroud)
除了values.war文件,似乎从来没有添加过,
docker exec -it values /bin/bash
Run Code Online (Sandbox Code Playgroud)
并检查/opt/bitnami/tomcat/data/未复制战争文件的目录。
但是我们尝试了以下操作,并且当我们连接到docker容器时,文件已被复制
FROM bitnami/tomcat
EXPOSE 8080
EXPOSE 8009
RUN mkdir -p /var/app
ADD values.war /var/app
Run Code Online (Sandbox Code Playgroud)
因此,我们认为问题出在目录上,因此我们尝试了以下方法
FROM bitnami/tomcat
EXPOSE 8080
EXPOSE 8009
RUN ls -l /opt/bitnami/tomcat/data/
Run Code Online (Sandbox Code Playgroud)
这给了输出
ls: cannot access /opt/bitnami/tomcat/data/: No such file or directory
Run Code Online (Sandbox Code Playgroud)
建立图像时
我们认为问题是因为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 中更改卷:如果任何构建步骤在声明卷后更改了卷中的数据,则这些更改将被丢弃。
| 归档时间: |
|
| 查看次数: |
1097 次 |
| 最近记录: |