将DDEV数据库挂载到主机文件系统而不是Docker卷中

时间:2019-12-18 17:28:53

标签: docker ddev

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

2 个答案:

答案 0 :(得分:0)

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"

答案 1 :(得分:0)

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