docker-compose中volumes的问题

发布于 2022-09-04 00:45:17 字数 187 浏览 13 评论 0

图片描述

mysite.template是一个文件,但是映射到docker里就成了一个目录,请问是哪里写错了呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

瞳孔里扚悲伤 2022-09-11 00:45:17

原因

首先要知道 Docker 引擎只能在 Linux 核心的系统上运行,Windows 与 macOS 系统上是不能直接运行 Docker 引擎的。最开始的解决方案是在本地创建虚拟机,也就是 Docker Machine 提供的功能。创建一台 Linux 系统的虚拟机,并且上面已经安装好了 Docker 。 后来 Docker 公司为了让 Docker 在我们平时工作的电脑上有很好的本地化体验,推出了我们现在用的 Docker for Windows 与 Docker for Mac。

DFW 与 DFM 都分别用了自己的虚拟技术,比如你用 DFW,要在 Windows 上开启 Hype-V。在用户体验上,让我们感觉 Docker 就在本地运行,但实际上,还是用了些虚拟技术。这就导致了共享数据卷性能差的问题,也就是如果你的网站文件非常多(比如 Drupal),你在本地设置了共享数据卷,把网站文件共享给容器,你会发现网站的运行速度会相当慢。可能比实际的性能差了几十倍。

在本地开发网站的时候, 我们要设置共享数据卷,把网站文件共享到容器。而在生产环境上,网站的文件应该已经 Build 到了镜像里了,这也就不会存在性能问题。即使在生产环境上使用了共享数据卷,也不会遇到性能问题。所以只有在本地开发的时候, 我们才需要想办法解决这个数据卷的性能问题。

解决

我找到的方案是用一个叫 docker-sync 的工具,主要功能就是让我们创建一个同步文件用的容器,它会使用我们自己设置的同步方法,把本地文件同步到这个容器里。这个同步也可以是双向的,也就是容器里对文件的修改也会同步到本地。网站需要的其它服务可以使用这个同步容器创建的数据卷,这就越过了 DFW 或 DFM 用的共享数据卷的方法,这样也就解决了数据卷的性能问题。

说实话,这真的有点复杂。本身 Docker 就有点让人晕,我们还在挣扎容器与虚拟机之间的区别,因为要解决本地的容器数据卷性能问题,又带了一些新概念。比如 docker-sync,它是一套工具,你得先去安装一下它,它是用 Ruby 语言写的,可以使用 gem 命令安装它。docker-sync 提供了一些同步文件的方法,其中我用的是 unison 方法,unison 是个双向同步用的工具。

unison 是个独立的工具,docker-sync 用了这个工具在主机与容器之间同步文件。这个同步只有在我们本地开发时会用到,因为要解决性能问题,在生产环境上你不需要使用同步。即使你的网站在共享数据卷上,运行起来也不会有性能问题,一定要记清楚这一点。同步文件只是为了解决本地开发时遇到的共享数据卷的性能问题。

锦上情书 2022-09-11 00:45:17
-v host_path/mysite.template:ps_path/mysite.template

run语法是这么写的。 注意文件名

聆听风音 2022-09-11 00:45:17

一样的文件 放到ubuntu下就好使了,估计windows的docker有问题吧

浅唱ヾ落雨殇 2022-09-11 00:45:17

映射文件夹,然后再调用文件夹的文件就行了。

被你宠の有点坏 2022-09-11 00:45:17

Volumn官方解释是Data directory, 连接如下:

 https://docs.docker.com/engine/tutorials/dockervolumes/

如果是单纯添加文件,可以用add或copy

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文