У меня есть проект с большой базой данных (более или менее 50 ГБ), и поскольку мне нужно запускать также другие проекты с docker / ddev, это может быть проблемой, я точно могу указать размер диска докера, но я хотел знать если это возможно для определенного проекта, храните базу данных вне докера ...
В простых проектах docker (docker-compose) я сохраняю папку «data», которая не находится внутри докера, я бы хотел сделать более или менее то же самое с ddev, если это возможно.
Сейчас я использую OSX, но если это возможно, также и в Win10, это было бы здорово.
Спасибо!
Смонтируйте базу данных DDEV в файловую систему хоста, а не внутри тома докера
Ответы (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"
Другой вариант, конечно же, - запустить сервер MySQL / MariaDB на вашем хост-компьютере для этой огромной базы данных. После этого ваш проект сможет получить доступ к базе данных на хосте, используя имя хоста host.docker.internal. Это дает вам возможность запускать и управлять своим собственным сервером базы данных на хосте, но с огромной базой данных это может оказаться целесообразным. Вы также можете запустить сервер db где-нибудь в вашей локальной сети, что является той же основной идеей; сервер db просто должен быть доступен изнутри веб-контейнера. В любом из этих случаев вы можете использовать omit_containers: [db]
и вообще не использовать контейнер db.