【问题标题】:Copy files from docker to host when mounting挂载时将文件从 docker 复制到主机
【发布时间】:2019-11-15 12:29:07
【问题描述】:

我有这样的音量设置:

volumes:
  - type: bind
    source: //c//Docker/themes
    target: /var/www/html/wp-content/themes

它可以工作,但是当我创建这个挂载时,它会删除指定路径中 docker 上的所有文件。

是否有保存这些文件并将它们复制到主机的选项或方法?

【问题讨论】:

  • 主机目录最初是空的吗?

标签: docker docker-compose


【解决方案1】:

挂载不会删除目标路径上存在的数据,它会将其隐藏,直到您删除挂载点您会发现旧数据仍然存在。将其视为旧数据存在于您已安装的新卷下

例如,如果您的主硬盘上有wp-content/uploads/,并且由于某种原因您决定使用单独的磁盘进行上传。如果直接挂载新硬盘,指向上传路径,旧文件会隐藏,不会删除,所以需要先迁移数据再挂载。

所以我通常首先将容器中的内容(如果需要)复制到主机,然后我会执行安装部分。所以你可以先使用这个命令(我假设你在 windows - 因为//c 部分 - 因为我不是 windows 用户所以你可能需要根据需要更改路径):

docker cp mycontainer:/var/www/html/wp-content/themes //c//Docker/themes

之后,您可以挂载包含所有内容的主机目录。但请确保在复制之前您的主机上没有类似的目录,以避免覆盖数据。

【讨论】:

  • 我使用 docker-compose 文件来启动容器。有什么方法可以做到,而无需在每次设置时手动从撰写文件中删除卷?
  • @Guerrilla,我们是在谈论原始的 wordpress 主题吗?如果是这样的话,那么从您正在使用的同一个 wordpress 版本中获取它们并将其保存在本地呢?
猜你喜欢
  • 2018-09-13
  • 1970-01-01
  • 2014-03-29
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多