我有一个简单的ASP.NET核心应用程序,它从另一个项目访问文件。这是我的代码:
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 for Linux中运行应用程序,我会得到一个例外,说明找不到文件。当我调试时,currentDirectory
被设置为/app
而不是实际的物理目录。
如何在Docker中运行时获取文件?
如何在Docker中运行时获取文件?
Docker提供的大部分价值都是通过在容器中创建隔离环境来实现的。这提供了使容器具有吸引力(网络隔离,进程隔离等)的所有好处,但它确实意味着容器通常是完全隔离的(存在例外,例如卷安装)。因此,尝试修改容器以便它可以访问容器外部的东西可能是一个好主意(例如数据库)或一个相当糟糕的想法(本地文件访问)。
你的文件包含什么?它们只是您应用程序的静态数据吗?如果是这样,我建议将所有文件放在容器中。如果你能做到这一点,那么你的容器实际上就变成了一个孤立的应用程序,它不仅可以在你的计
如果文件在概念上实际上与应用程序分离,则需要以其他方式处理它们。例如,数据库需要是一个单独的容器。如果应用程序希望与文件服务器通信,那么您应该使用卷装入。
考虑一下如何部署容器。它会是一个独立的东西吗?部署时它的依赖性是什么?