【发布时间】:2016-12-23 16:11:11
【问题描述】:
我编写了一个 ASP.NET Core 应用程序,它应该在使用 docker 的容器中运行。这可行,但孔构建过程相对较慢。主要瓶颈似乎是nuget。引用了很多包,从互联网上加载所有这些包需要时间。这是在每次构建时完成的,因为 docker 总是启动一个新容器。
我的想法是在存储包的主机上创建一个持久字典。因此,不必在每次构建时都获取它们。 dotnet restore 有一个参数 --packages 我可以在其中定义一个缓存目录。但为此需要将共享字典传递给docker build 命令。
我发现 docker run 有一个 -v 参数,我可以在其中传递 /host/path:/container/path 以将文件夹从主机共享到容器。但这仅适用于docker run,不适用于docker build。 COPY 命令也不适合这里,因为它只允许我将文件从主机复制到容器。首先,我必须反过来复制(容器到主机)。
那么如何创建一个不与容器一起处理的缓存目录?
我发现了类似的问题,例如this。它的作曲家在那里,但持久缓存目录的问题是相同的。他们在docker run 上使用-v 参数。但我不明白这是如何解决问题的:在我对 docker 的理解中,dockerfile 应该构建应用程序。这包括安装 NuGet-Packages for ASP.NET Core、bower 等依赖项。所以这应该发生在 dockerfile 中,而不是在运行容器时。
【问题讨论】:
标签: linux docker asp.net-core dockerfile