Кажется, этот вопрос уже задавался от другого автора, но ответа не было. У меня есть дополнительная информация по этому поводу, поэтому я снова задаю тот же вопрос, но с большим количеством дополнительных материалов.
Я запускаю Docker в Windows 10. У меня Docker настроен для использования контейнеров Linux (а не контейнеров Windows). Мой диск C настроен как общий диск.
Эта проблема
У меня есть следующий файл для создания докеров с именем wp.yml
:
version: '3.2'
services:
db:
image: mysql:5.7
volumes:
- type: volume
source: wp_dbA
target: /var/lib/mysql
restart: always
volumes:
wp_dbA:
driver_opts:
type: none
device: ./wp-db
o: bind
Выполняю следующим образом:
c:\repos\wpsand\wpA> docker-compose -f wp.yml up -d
Я получаю следующую ошибку:
ОШИБКА: для wpa_db_1 Невозможно создать контейнер для службы db: ошибка при монтировании тома с параметрами: type = 'none' device = '. / Wp-db' o = 'bind': нет такого файла или каталога
ОШИБКА: для db Невозможно создать контейнер для службы db: ошибка при монтировании тома с параметрами: type = 'none' device = '. / Wp-db' o = 'bind': нет такого файла или каталога ОШИБКА: обнаружены ошибки при запуске проэкт.
Несмотря на сообщение, папка wp-db
уже существует, она находится здесь:
c:/repos/wpsand/wpA/wp-db
Подсказки ...
Несмотря на указанную выше ошибку, проверка docker volume ls
показывает, что том wpa_wp_dbA
был недавно создан.
Подсказка №1
Если я изменю общий том device
на использование абсолютного пути (например, /c/repos/wpsand/wpA
), а затем запустите его снова ... У меня та же проблема. Однако сообщение об ошибке по-прежнему говорит о том, что устройство с относительным путем ./wp-db
не может быть найдено.
Очевидно, повторное использование общего тома с именем wp_dbA
приводит к игнорированию любого вновь указанного пути. Оригинальный ./wp-db
- это то, что он попытается использовать.
Подсказка # 2
Если я вернусь к относительному пути, но изменю имя общего тома на «wp_dbB», я все равно получу ту же ошибку.
Подсказка # 3
Это объединяет # 1 и # 2 выше. Если я изобрету новое имя общего тома и использую абсолютный путь, это сработает! Мой контейнер успешно запущен. К сожалению, я больше не использую желаемый относительный путь.
Подсказка 4
Теперь, когда мой контейнер работает, я docker-compose down
снова меняю файл docker-compose. Я возвращаю относительный путь и "сочиняю". Работает!
Заключение?
Похоже, что относительные пути просто не работают. Но я видел файлы docker-compose, размещенные в Интернете с использованием той же нотации относительного пути общего тома. Возможно, это работает для Docker, но не для Docker в Windows?
Может ли кто-нибудь предложить обходной путь?
Обновлять!
Я нашел этот пост SO, который почти имеет работу с относительным путем -около. Я обновил свой файл набора, чтобы использовать нотацию ${PWD}
, и запустил его из оболочки Git Bash. Теперь у меня такая ошибка:
$ docker-compose up -d
Creating wpa_db_1 ... error
Creating wpa_db_1 ...
ERROR: for wpa_db_1 Cannot create container for service db: error
while mounting volume with options: type='none'
device='C:/repos/wpsand/wpA/wp-db' o='bind': no such file or directory
ERROR: for db Cannot create container for service db: error while
mounting volume with options: type='none' device='C:/repos/wpsand/wpA/wp-db'
o='bind': no such file or directory
Encountered errors while bringing up the project.
Это почти сработало! Если бы только ${PWD}
расширился до обозначения монтирования Linux (/c/repos/wpsand/wpA/wp-db
)!