如何在 Docker 中同时调试 2 个独立的 Visual Studio 解决方案?

问题描述 投票:0回答:1

我是否在 Visual Studio 2022 中设置了 2 个独立的 Dotnet 解决方案,可以同时调试并与 docker 交互?这听起来很简单,文档在哪里???

我看到的大多数文档和示例都涉及两个应用程序的项目位于同一解决方案中,并且可能使用 docker compose 文件。问题是,我无法选择合并这些存储库,并且将 git 捆绑到一个解决方案中进行管理是没有意义的。我不知道这是否会改变我的结果。

尝试从

Add/ Docker Support...
开始设置几个典型的 Dockerfile 会导致一个应用程序阻塞另一个应用程序,因为它们设置为相同的端口。如果它是第一个要执行的,我可以运行它们中的任何一个,但第二个会失败,并出现来自
launchSettings.json
:

的最后一秒构建错误
CTC1011 The Docker container could not be started, because the following port(s) are already in use: 5000, 5001`

用 8080、8081 替换一个应用程序的端口会在启动过程中进一步推进,但窗口弹出窗口会解释:

One or more errors occurred.
在日志中,我可以看到它正在尝试连接到
https://localhost:5001/swagger
,并且由于另一个窗口已打开到
https://localhost:8081/swagger
,我认为应该没问题,但在日志中却出现了“无法附加到浏览器”错误日志。

示例 launchSettings.json` 相关片段:

"AppName": { // In either file AppName = "App1" or "App2"
  "applicationUrl": "https://localhost:5001;http://localhost:5000",
  // Or on App2: "applicationUrl": "https://localhost:8081;http://localhost:8080",
"Docker": {
  "commandName": "Docker",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Dev"
  },
  "sslPort": 5001, // Or on App2 8081
  "httpPort": 5000, // Or on App2 8080

我选择了 8080、8081,因为我已经看到这些端口正在使用调试前端应用程序,并且我相当确定这 2 个 dotnet 解决方案不会引用它们。

示例 Dockerfile` 相关片段:

EXPOSE 80 // Also tried App2 = 81
EXPOSE 443 // Also tried App2 = 444

我将调试器设置为

Docker
启动配置文件, 我已经彻底搜索了多余的端口号外观。

我在 Docker ui 的容器屏幕中看到的一个奇怪的事情是,App2 将有 4 个端口:

8081:443,
55010:444,
8080:80,
55011:81

55010 和 55011 没有出现在任一解决方案代码中的任何位置。

App 1 将显示更预期的报告:

5001:443,
5000:80

无论我以什么顺序调试它们,Docker 容器端口总是会如上所示重建。

任何帮助将不胜感激... 接下来,我将不得不将这些应用程序中的一个相互指向...因此,有关这方面的提示的奖励积分!

.net docker visual-studio-2022 docker-swarm visual-studio-debugging
1个回答
0
投票

删除

C:\Users\{Username}\AppData\Local\Microsoft\VisualStudio\{VisualStudioVersion}\privateregistry.bin
解决了问题🤦。如果你是那种需要调试很多不同应用程序的人,VS22 的端口就会被粘住。

© www.soinside.com 2019 - 2024. All rights reserved.