.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 будет решать, где на хосте хранится этот том и кто может получить к нему доступ, а относительный путь - это каталог, которым вы управляете.
Еще один момент, который следует отметить при использовании относительного пути, это убедиться, что вы установили разрешения для своего каталога, чтобы процессы докера могли использовать его.