Относительный путь с общими томами Docker-Compose

Кажется, этот вопрос уже задавался от другого автора, но ответа не было. У меня есть дополнительная информация по этому поводу, поэтому я снова задаю тот же вопрос, но с большим количеством дополнительных материалов.

Я запускаю 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)!


person Brent Arias    schedule 27.02.2018    source источник
comment
У меня очень похожие проблемы с Docker для Windows. Я склонен обнаруживать, что ввод относительного пути, а не имени общего тома действительно работает, но относительный путь для тома в разделе томов - нет. Не знаю почему   -  person Craig Brett    schedule 18.12.2018


Ответы (1)


./ синтаксис работал у меня для среды win 10.

volumes:
  - ./mdata/:/data/db/
  - ./logs/:/var/log/mongodb/mongod.log
  - ./mongod.cfg:/etc/mongod.conf.orig
person Davut Gürbüz    schedule 07.09.2020