为Docker容器创build共享包caching文件夹

我写了一个ASP.NET Core应用程序,它应该使用docker在一个容器中运行。 这工作,但孔build造过程相对较慢。 主要瓶颈似乎是nuget。 引用了很多软件包,并且需要时间从互联网加载它们。 这是在docker alwas启动一个新的容器之后的每个构build中完成的。

我的想法是在存储包的主机上创build一个持久字典。 所以他们不需要在每一个构build中获取。 dotnet restore有一个参数--packages我可以定义一个caching目录的包。 但为此,它需要将共享字典传递给docker build命令。

我发现docker run有一个-v参数,我可以通过/主机/path:/容器/path共享从主机到容器文件夹。 但这只适用于docker run ,而不是docker build 。 另外COPY命令不适合在这里,因为它让我只从主机复制文件到容器。 首先,我不得不相反地复制(容器到主机)。

那么我怎样才能创build一个不能与容器一起处理的caching目录呢?

我发现了类似的问题。 它的composer php在那里,但是持久caching目录的问题是一样的。 他们在docker run上使用-v参数。 但我不明白如何解决这个问题:在我的理解docker,docker文件应该build立应用程序。 这包括安装诸如用于ASP.NET Core的NuGet-Packages和类似的依赖项。 所以这应该在dockerfile中发生,而不是在运行容器时发生。