在Docker期间获取文件

时间:2018-08-30 07:07:33

标签: c# file docker asp.net-core .net-core

我有一个简单的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));

如果我在 Linux版Docker 中运行应用程序,则会出现异常,提示找不到文件。调试时,currentDirectory设置为/app而不是实际的物理目录。

在Docker中运行时如何获取文件?

1 个答案:

答案 0 :(得分:1)

  

在Docker中运行时如何获取文件?

docker提供的大部分价值是通过在容器中创建隔离环境来实现的。这提供了使容器具有吸引力的所有优点(网络隔离,进程隔离等),但它的确意味着容器通常被完全隔离(有一些例外,例如卷安装)。因此,尝试修改容器以使其可以访问容器外部的内容可能是一个好主意(例如数据库),也可能是一个相当糟糕的主意(本地文件访问)。

您的文件包含什么?它们只是您的应用程序的静态数据吗?如果是这样,我建议将所有文件也放入您的容器中。如果可以这样做,那么您的容器实际上将成为一个隔离的应用程序,不仅可以在您的计算机上运行,​​而且可以在任何计算机上运行。

如果文件实际上在概念上与应用程序是分开的,则需要以其他方式处理它们。例如,数据库需要是一个单独的容器。如果应用程序希望与文件服务器通信,那么您可能应该使用卷挂载。

考虑如何部署容器。它会是独立的吗?部署时其依赖性是什么?