.Net Core API работает под докером

У меня есть проект (.Net Core API), который работает под Docker для Windows и есть служба, где клиенты могут загружать файлы.

Я хочу сохранить эти файлы на сервере (например, "C:\TempFolder"), но когда я запускаю проект в режиме отладки (с докером) и динамически создаю каталог из кода, возникает ошибка: 'System.IO.IOException: Invalid аргумент..."

CurrentDirectory - это /app, а в DirectoryInfo значение FullPaths равно "/app/C:\TempFolder".

введите описание изображения здесь

когда я запускаю приложение без докера, оно работает нормально

Это может звучать плохо, но я должен спросить:

Можно ли создать каталог (где-то, где у меня есть разрешение, например, на моем локальном компьютере или сервере) при работе в Docker?

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

1 ответ

Решение

Вы можете использовать тома Docker в качестве аргументов при запуске Docker-контейнера или иметь тома, определенные в Docker-compose, если вы его используете.

docker volume create my-vol

docker run -d --name devtest --mount source=my-vol,target=/app

Или сопоставьте объем докера, используя docker-compose.yml:

    volumes: 
        - my-volume:/app

Или отобразите в каталог относительно docker-compose.yml:

    volumes: 
        - ./temp-dir:/app

Имейте в виду, что код внутри контейнера не будет иметь представления о том, что какая-то папка сопоставлена ​​с хранилищем, внешним по отношению к контейнеру.

С точки зрения хоста основное различие между отображением на том докера и отображением на относительный путь заключается в том, что Docker будет решать, где на хосте хранится этот том и кто может получить к нему доступ, а относительный путь - это каталог, которым вы управляете.

Еще один момент, который следует отметить при использовании относительного пути, это убедиться, что вы установили разрешения для своего каталога, чтобы процессы докера могли использовать его.

Другие вопросы по тегам