Я использую 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 было доступно из контейнера?