Том, определенный в docker-compose.yml, отображается пустым

#docker #docker-compose

Вопрос:

У меня в docker-compose.yml файле есть следующее:

 version: '3.9'  services:  db:  image: mysql:5.7  volumes:  - db_data:/var/lib/mysql  - db_import:/import  restart: always  ports:  - "3338:3306"  environment:  MYSQL_ROOT_PASSWORD: somewordpress  MYSQL_DATABASE: wordpress  MYSQL_USER: wordpress  MYSQL_PASSWORD: wordpress volumes:  db_data: {}  db_import: {}  dist: {}  

Проблема в том, что, хотя у меня есть dump.sql файл в моей db_import папке (в той же папке, где docker-compose.yml он находится), я нахожу, что docker-compose exec db ls -al /import он показывает пустой каталог. Я попытался перезапустить все контейнеры docker без каких-либо улучшений.

Почему этот каталог не пропускает мой контент?

Комментарии:

1. Я думаю, что относительный путь не выводится автоматически и вместо этого должен быть чем-то вроде ./db_import. В противном случае это предполагает абсолютную патинированность. Это, или docker_volume уже существует с именем

Ответ №1:

Написав:

 volumes:  - db_data:/var/lib/mysql  - db_import:/import (...) volumes:  db_data: {}  db_import: {}  dist: {}  

Вы создали так называемые Именованные тома с именами db_data db_import и dist . Докер не говорит нам, где хранятся эти тома (и нас это не должно волновать). Такого рода тома используются для обмена данными между контейнерами, и у них нет доступа ни к чему с вашей хост-машины.

Если вы хотите обмениваться файлами между вашим хостом и контейнером, вы должны вместо этого использовать привязки монтирования — синтаксис почти идентичен, вам просто нужно заменить db_data и db_import с абсолютными путями к этим каталогам:

 version: '3.9'  services:  db:  image: mysql:5.7  volumes:  - /PATH/TO/db_data:/var/lib/mysql  - /PATH/TO/db_import:/import  restart: always  ports:  - "3338:3306"  environment:  MYSQL_ROOT_PASSWORD: somewordpress  MYSQL_DATABASE: wordpress  MYSQL_USER: wordpress  MYSQL_PASSWORD: wordpress #volumes: That part isn't needed unless you use "dist" volume somewhere # db_data: {} # db_import: {} # dist: {}