Получить файлы во время Docker - PullRequest
0 голосов
/ 30 августа 2018

У меня есть простое приложение ASP.NET Core, и оно обращается к файлам из другого проекта. Вот мой код:

var currentDirectory = Directory.GetCurrentDirectory();
            string directory = Path.GetFullPath(Path.Combine(currentDirectory, @"..\Data\SqlScripts"));
string[] fileArray = Directory.GetFiles(directory, "*.sql");
eturn fileArray.SingleOrDefault(f => f.Contains(filename));

Если я запускаю приложение в Docker для Linux , я получаю исключения о том, что файлы не найдены. При отладке currentDirectory устанавливается на /app вместо фактически физического каталога.

Как я могу получить файлы также во время работы в Docker?

1 Ответ

0 голосов
/ 30 августа 2018

Как я могу получить файлы также во время работы в Docker?

Многое из того, что предоставляет docker, реализуется путем создания изолированной среды в контейнере. Это обеспечивает все преимущества, которые делают контейнер привлекательным (изоляция сети, изоляция процесса и т. Д.), Но это означает, что контейнер полностью изолирован (есть исключения, например, монтирование томов). Поэтому попытка изменить контейнер так, чтобы он мог обращаться к вещам вне контейнера, может быть хорошей идеей (например, база данных) или довольно плохой идеей (локальный доступ к файлам).

Что содержат ваши файлы? Это просто статические данные для вашего приложения? Если это так, я бы посоветовал поместить все файлы в ваш контейнер. Если вы можете сделать это, тогда ваш контейнер фактически станет изолированным приложением, которое может работать не только на вашем компьютере, но и на любом компьютере.

Если файлы фактически концептуально отделены от приложения, то их необходимо обрабатывать другим способом. Например, база данных должна быть отдельным контейнером. Если приложение ожидает соединения с файловым сервером, вам, вероятно, следует использовать монтирование тома.

Подумайте, как будет развернут ваш контейнер. Это будет автономная вещь? Каковы его зависимости при развертывании?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...