Смонтируйте базу данных DDEV в файловую систему хоста, а не внутри тома докера

У меня есть проект с большой базой данных (более или менее 50 ГБ), и поскольку мне нужно запускать также другие проекты с docker / ddev, это может быть проблемой, я точно могу указать размер диска докера, но я хотел знать если это возможно для определенного проекта, храните базу данных вне докера ...
В простых проектах docker (docker-compose) я сохраняю папку «data», которая не находится внутри докера, я бы хотел сделать более или менее то же самое с ddev, если это возможно.
Сейчас я использую OSX, но если это возможно, также и в Win10, это было бы здорово.
Спасибо!


person Francesco    schedule 18.12.2019    source источник
comment
Не могли бы вы объяснить, почему такой размер базы данных должен вызывать какие-либо проблемы, особенно если вы также хотите запускать другие проекты?   -  person Nico Haase    schedule 10.01.2020
comment
На самом деле это просто, это может быть проблемой для меня, когда том докера всегда заполнен только для таких огромных баз данных или многосайтовых веб-сайтов (примерно с 16 или около того подсайтов) баз данных ... я считаю, что гораздо проще иметь базы данных за пределами громкость докера, чтобы не повышать и не повышать каждый раз настройку места для хранения докера.   -  person Francesco    schedule 12.01.2020


Ответы (2)


ddev использовался для монтирования базы данных на хосте с помощью bind-mount, но у docker есть ряд проблем с этим, особенно в Windows. Однако он работал нормально на Mac и Linux, но не работал на Docker Toolbox в Win10 Home. Тома Docker более надежны для взаимодействия и работают быстрее, потому что они находятся в томе Linux.

Однако вы можете создать .ddev/docker-compose.bindmountdb.yaml с таким содержимым, которое в основном переключается на старый подход и монтирует базу данных в каталог .ddev / db проекта.

version: "3.6"

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

person rfay    schedule 18.12.2019
comment
Потрясающие!! Оба ответа великолепны, но это именно то, что я искал, и, кроме того, с добавлением снимка мне удалось перенести проект с компьютера с нормальным объемом базы данных на другой компьютер с конфигурацией для привязки-монтирования базы данных ! Спасибо! - person Francesco; 19.12.2019

Другой вариант, конечно же, - запустить сервер MySQL / MariaDB на вашем хост-компьютере для этой огромной базы данных. После этого ваш проект сможет получить доступ к базе данных на хосте, используя имя хоста host.docker.internal. Это дает вам возможность запускать и управлять своим собственным сервером базы данных на хосте, но с огромной базой данных это может оказаться целесообразным. Вы также можете запустить сервер db где-нибудь в вашей локальной сети, что является той же основной идеей; сервер db просто должен быть доступен изнутри веб-контейнера. В любом из этих случаев вы можете использовать omit_containers: [db] и вообще не использовать контейнер db.

person rfay    schedule 18.12.2019