需要Docker卷的持久数据,但是有空目录

我正在为java应用程序编写一个Dockerfile,但是我正在努力处理卷:挂载的卷是空的。 我已经阅读了Dockerfile参考指南和编写Dockerfiles的最佳实践,但是,一开始,我的示例非常复杂。

我想要做的是能够在主机上安装以下项目(在安装的卷中):

  1. configuration文件夹,
  2. 日志文件夹,
  3. 数据文件夹,
  4. 属性文件

让我总结一下: 安装应用程序 (使用RUN命令从tar.gz中提取)时,会写入一堆文件和目录(包括log和conf)。 当应用程序启动时 (使用CMD或ENTRYPOINT),它将创build一个数据文件夹(如果它不存在并将数据文件放在其中)。

我只对以下内容感兴趣:

  1. / rootapplicationfolder / conf_folder
  2. / rootapplicationfolder / log_folder
  3. / rootapplicationfolder / data_folder
  4. / rootapplicationfolder / properties_files

我对/ rootapplicationfolder / binary_files不感兴趣

有什么我看不到的。 我已阅读并应用以下两个链接中find的信息,但没有成功。

问题:我应该在主机上使用/ rootapplicationfolder映射到顶级目录吗?这些文件如何?

我的Dockerfile中的“VOLUME”顺序是否重要? 是否需要在放气之前或之后放置(RUN tar zxvf compressed_application)?

https://groups.google.com/forum/#!topic/docker-user/T84nlzw_vpI

Linux上的Docker – 清空挂载的卷

尝试使用Docker-compose,使用volumes属性设置你想要在你的机器和你的容器之间安装的path。

版本2示例

 web: image: my-web-app build:. command: bash -c "npm start" ports: - "8888:8888" volumes: - .:/home/app/code (This mount your current path with /home/app/code) - /home/app/code/node_modules/ (unmount sub directory) environment: NODE_ENV: development 

你也可以看看这个仓库。 https://github.com/williamcabrera4/docker-flask/blob/master/docker-compose.yml

那么,我设法得到我想要的。 首先,我的Dockerfile中没有ant VOLUME指令。 所有共享目录都使用docker run命令的-v选项创build。

之后,我提取存档的问题时,“提取”将覆盖用-v挂载的现有目录,因为这是不可能的。

所以,我把归档文件压缩到了-v挂载卷不存在的地方,在这一步之后,我把放缩的/ somedirectory的内容映射-vMountedSomeDirectory

我在CentOS上仍然遇到docker的问题, mv会将这些文件复制到目的地,但在移动之后无法在源文件中删除它们。 我累了,只是使用debian发行。