【发布时间】:2019-10-24 16:05:55
【问题描述】:
是否可以在我的卷中写入文件,前提是它们尚未退出并且永远不会删除我以前的文件?
我有一个 Dockerfile,它创建了一个名为 bot 的图像。在图像中,我有一个文件夹 /models,它可以是空的。
构建镜像后,它会被推送到 Nexus/Dockerhub 存储库。
为了在我的虚拟机上构建我的应用程序,我有一个 docker-compose.yml,除其他外,它称为bot 图像,还指定文件夹/models 应该在一个卷中。
我的问题是,我的虚拟机上的/models 已经有文件(file_1、file_2、...),如果我先使用docker-compose down,然后再使用docker-compose up -d,我会保留这些文件,因为我的音量。但是,如果我有一个新版本的图像bot,当我做docker-compose up -d 时,我会调用我的图像的新版本(这几乎是我想要的),但我会删除我卷中的文件夹/models我图片中的新 /models 文件夹。
因此,我想找到一种方法在我的卷中写入文件,前提是它们尚未退出并且永远不会删除我以前的文件。
version: "3.2"
services:
bot:
restart: always
tty: true
volumes:
- type: volume
source: ModelsVolume
target: /models
volume:
nocopy: true
volumes:
ModelsVolume:
【问题讨论】:
-
您可以随时更新您的
bot图像的ENTRYPOINT以使用包含检查文件是否存在的逻辑的shell 脚本,即:[ -e "/models/file_1" ] || [ -e "/models/file_2" ] || touch /models/file_1 /models/file_2。 -
你是对的,谢谢你的帮助!
标签: docker docker-compose dockerfile docker-volume