У меня есть контейнер docker, на котором запущено простое приложение python flask. Это контейнер linux, но моя машина - машина windows. Я подключил внешний жесткий диск через USB, и он отображается в windows как диск E. Я дал docker разрешение на доступ ко всему через C и E. через настройки.
Все, что я хочу сделать python, это отобразить содержимое папки из папки в E. Но ничего не происходит нашел! Ранее я получал сообщение о том, что путь к файлу не существует, но я смог это исправить. Тем не менее, теперь он даже, кажется, не находит никакого содержимого на моем желаемом пути. Я видел примеры запуска контейнера docker с томом в качестве параметра, но я запускаю его с docker -compose.
Вот мой Dockerfile:
FROM python:3
WORKDIR /code
ENV FLASK_APP practice.py
ENV FLASK_RUN_HOST 0.0.0.0
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]
Вот мой docker -компонентный файл:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- /mnt/e/folderWithStuff/
environment:
FLASK_ENV: development
redis:
image: "redis:alpine"
Причина, по которой второй том имеет путь / mnt / e / folderWithStuffInIt потому, что это путь, к которому я могу получить доступ из подсистемы Ubuntu моего компьютера Windows. Это заставляет меня поверить, что при доступе изнутри контейнера linux это должен быть тот же путь.
Конечная точка, к которой я обращаюсь, делает это:
@app.route('/list')
def list_files():
files = os.listdir("/mnt/e/folderWithStuff")
result = ""
for file in files:
result = result + file
return result
Все, что я получаю назад пустая страница. Маршрут хорош, потому что если я изменю его, чтобы вернуть строку, я вижу строку на этом маршруте. Он не жалуется на каталог, поэтому кажется, что в этом каталоге должно быть что-то. Это просто не похоже на то, что он на самом деле обращается к папке на внешнем диске, к которому я дал разрешение на доступ. Что мне не хватает или недоразумение?