【问题标题】:Mount DDEV database to host filesystem instead of inside docker volume将 DDEV 数据库挂载到主机文件系统,而不是在 docker 卷内
【发布时间】:2019-12-18 17:28:53
【问题描述】:

我有一个带有大型数据库(或多或少 50GB)的项目,由于我还必须使用 docker/ddev 运行其他项目,这可能是个问题,我肯定可以调整 docker 磁盘的大小,但我想知道某个项目是否可以将数据库保留在 docker 之外...
对于普通的 docker (docker-compose) 项目,我保留了一个不在 docker 内部的“数据”文件夹,如果可能的话,我想用 ddev 或多或少做同样的事情。
现在我在 OSX 上,但如果在 Win10 中也可以,那就太好了。
谢谢!

【问题讨论】:

  • 您能否进一步解释一下为什么这样的数据库大小会导致任何问题,尤其是在您还想运行其他项目的情况下?
  • 实际上很简单,对于我来说,只有如此庞大的数据库或多站点网站(大约有 16 个子站点)数据库才能让 docker 卷总是满的,这对我来说可能是个问题......我发现很多将数据库放在 docker 卷之外更简单,以避免每次设置 docker 的存储空间时都会带来高和高。

标签: docker ddev


【解决方案1】:

ddev 过去使用绑定挂载将数据库挂载到主机上,但是 docker 有很多问题,尤其是在 Windows 上。它在 mac 和 Linux 上运行良好,但在 Win10 Home 上的 Docker Toolbox 上运行不佳。 Docker 卷在交互方面更可靠,速度更快,因为它们位于 linux 卷上。

但是,您可以使用这样的内容创建 .ddev/docker-compose.bindmountdb.yaml,这基本上会切换回旧方法,并将数据库绑定挂载到项目的 .ddev/db 目录中。

version: "3.6"

services:
  db:
    volumes:
    - type: "bind"
      source: "./db"
      target: "/var/lib/mysql"

【讨论】:

  • 太棒了!这两个答案都很好,但这正是我正在寻找的,此外,通过添加快照,我设法将项目从具有“普通”数据库卷的 PC 迁移到另一台配置为绑定的机器-安装数据库!谢谢!
【解决方案2】:

当然,另一种选择是在您的主机上运行 MySQL/MariaDB 服务器,用于庞大的数据库。然后,您的项目可以使用主机名“host.docker.internal”访问主机上的数据库。这使您可以在主机上运行和管理自己的数据库服务器,但是对于庞大的数据库,这可能是合适的。您也可以在本地网络的其他地方运行 db 服务器,这是相同的基本思想; db 服务器只需要从 web 容器内部访问即可。在上述任何一种情况下,您都可以使用 omit_containers: [db] 而根本不使用 db 容器。

【讨论】:

    猜你喜欢
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多