Gue*_*lla 7 visual-studio docker asp.net-core
我不使用 Visual Studio 2019 内部的内置 docker build,因为它太有问题了。相反,我构建了自己的容器,然后将 VS2019 附加到它以进行调试。
如果我对单个依赖项(或前一层)进行更改,那么它将重新下载所有依赖项以重建所需的层。
这是带宽/时间密集型的,并且包已经缓存在本地机器中。
我已阅读:https : //docs.microsoft.com/en-us/visualstudio/containers/container-build?view=vs-2019
它有一个有趣的表格,解释了内置功能如何映射文件夹:
我怎么看那个映射是什么样的?我认为如果我将该卷映射添加到我自己的撰写文件中,那么它将大大提高速度,因为它不必在每次构建时重新下载。
为了查看您的 docker 容器到底映射到什么,您可以通过以下方式列出 docker 容器
docker ps
Run Code Online (Sandbox Code Playgroud)
然后获取您的容器 ID,并通过以下方式检查它
docker inspect <id>
Run Code Online (Sandbox Code Playgroud)
我现在有一个正在运行的容器,它使用内置的 VS 工具集,所以让我们看看它是如何描述挂载的:
...
{
"Type": "bind",
"Source": "/host_mnt/c/Users/<name>/.nuget/packages",
"Destination": "/root/.nuget/packages",
"Mode": "ro",
"RW": false,
"Propagation": "rprivate"
},
...
Run Code Online (Sandbox Code Playgroud)
好的,这就是您可能正在寻找的坐骑。
为了看看 VS 到底做了什么,你可以转到项目的“obj”文件夹,然后转到“Docker”。
在这里你会发现VS将用于调用的实际有趣的docker-compose up文件,例如文件docker-compose.vs.debug.g.yml。在这里您还可以找到发布配置,它不包含 NuGet 安装,因为它实际上是使用dotnet publish.
因此,在docker-compose.vs.debug.g.yml文件中,您最终可以找到安装所需的路径,对于我的应用程序来说,它看起来像这样:
volumes:
- ...
- C:\Users\<name>\.nuget\packages\:/root/.nuget/packages:ro
Run Code Online (Sandbox Code Playgroud)
这正是我们在 docker 检查中发现的。
我希望这有帮助。
另外,请看一下这篇文章,其中详细介绍了 VS 使用的整个 docker 设置的工作原理:
https://www.scrum-tips.com/2017/12/27/understanding-docker-with-visual-studio-2017-part-2/
| 归档时间: |
|
| 查看次数: |
306 次 |
| 最近记录: |