Windows 10 привязывает монтирование в docker-compose не работает - PullRequest
0 голосов
/ 24 мая 2018

Я использую docker-compose для управления мультиконтейнерным приложением.1 из этих контейнеров необходим доступ к содержимому каталога на хосте.

Это кажется простым в соответствии с различными источниками документации по docker и docker-compose, но я изо всех сил пытаюсь заставить его работать.

  event_processor:
    environment:
      - COMPOSE_CONVERT_WINDOWS_PATHS=1
    build: ./Docker/event_processor
    ports:
      - "15672:15672"
    entrypoint: python -u /src/event_processor/event_processor.py
    networks:
      - app_network
    volumes:
      - C/path/to/interesting/directory:/interesting_directory"

При выполнении этого я получаю сообщение об ошибке:

ОШИБКА: Именованный том "C / путь / к / интересно / каталог: / интересный_каталог: rw" используется в службе"event_processor", но в разделе томов не найдено никакого объявления.

Из документов я понимаю, что объявление верхнего уровня необходимо только в том случае, если данные должны совместно использоваться контейнерами

, что здесь не так.

Документы для docker-compose, на которые я ссылался выше, имеют пример, который, кажется, делает именно то, что мне нужно:

version: "3.2"
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - type: volume
        source: mydata
        target: /data
        volume:
          nocopy: true
      - type: bind
        source: ./static
        target: /opt/app/static

networks:
  webnet:

volumes:
  mydata:

Однакопри попытке получить сообщение о синтаксисе:

ОШИБКА: файл Compose '. \ docker-compose.yaml' недопустим, поскольку: services.audio_event_processor.volumes содержит недопустимый тип; он долженбыть строкой

Поэтому я попытался подыграть:

volumes:
  - type: "bind"
    source: "C/path/to/interesting/directory"
    target: "/interesting_directory"

ОШИБКА: Файл Compose '. \ docker-compose.yaml' недопустим, потому что: services.audio_event_processor.тома содержит недопустимый тип, он должен бытьстрока

Итак, снова та же ошибка.

Я тоже попробовал следующее:

volumes:
  - type=bind, source=C/path/to/interesting/directory,destination=/interesting_directory

Нет ошибки, но, подключаясь к работающему контейнеру, я вижу следующие две папки;

type=bind, source=C

Так что мне кажется, что я могу создать несколько томов с 1 строкой (хотя прямая косая черта в этом случае обрезает строку), но я не сопоставляю его с каталогом хоста.

Я прочитал документы, но мне кажется, что я что-то упустил.Может кто-нибудь опубликовать пример монтирования каталога Windows с хоста в контейнер Linux, чтобы существующее содержимое каталога Windows было доступно из контейнера?

1 Ответ

0 голосов
/ 25 мая 2018

ОК, поэтому здесь было несколько проблем:

1.

У меня было

version: '3'

в верхней части моего docker-compose.yml.Длинный синтаксис , описанный здесь , не был реализован до версии 3.4, поэтому я перестал получать причудливую синтаксическую ошибку, когда обновил его до:

version: '3.6'

2.

Я используюМоя учетная запись докера на 2 компьютерах с Windows.Следуя подсказке из другого поста stackoverflow, я сбросил Docker к заводским настройкам.Мне пришлось дать докеру имя пользователя и пароль компьютера с уведомлением о том, что это необходимо для доступа к содержимому локальной файловой системы - в этот момент я вспомнил, что делал это на другом ПК, поэтому я не уверен, были ли на этом правильные учетные данные.,С правильными учетными данными для текущего ПК я смог подключить том с ожидаемыми результатами следующим образом:

   version: '3.6'

   event_processor:
    environment:
      - COMPOSE_CONVERT_WINDOWS_PATHS=1
    build: ./Docker/event_processor
    ports:
      - "15672:15672"
    entrypoint: python -u /src/event_processor/event_processor.py
    networks:
      - app_network
    volumes:
      - type: bind
        source: c:/path/to/interesting/directory
        target: /interesting_directory

Теперь он работает, как и ожидалось.Я не уверен, что это был сброс к заводским настройкам или обновленные учетные данные, которые это исправили.Завтра узнаю, когда использую другой компьютер, и обновлю.

...