【发布时间】:2018-03-06 08:13:58
【问题描述】:
我目前正在开发一个带有多个 docker 容器的 .Net Core 项目,其中 2 个是 .NET Core 控制台应用程序,第三个是 RabbitMQ。
我的目标是打开一个控制台窗口,我可以在其中按 Enter 键,至少有一个在 docker 容器中运行的控制台应用程序。
我通过右键单击我的控制台应用程序并单击“添加 => Docker 支持”来添加 docker-support。
这是我的 docker-compose-file:
version: '3'
services:
service1:
image: service1
build:
context: ./Service1
dockerfile: Dockerfile
links:
- "rabbitmq:rabbit"
service2:
image: service2
build:
context: ./Service2
dockerfile: Dockerfile
links:
- "rabbitmq:rabbit"
rabbitmq:
image: "rabbitmq:3-management"
ports:
- "8082:15672"
- "5672:5672"
这是我的 docker-compose-override.yml:
version: '3'
但 Visual Studio 在运行 Service2-container 时会执行以下覆盖:
Service2:
build:
args:
source: obj/Docker/empty/
context: C:\Develop\vsts_tfs\Service2
dockerfile: Dockerfile
entrypoint: tail -f /dev/null
environment:
NUGET_FALLBACK_PACKAGES: /root/.nuget/fallbackpackages
image: service2:dev
labels:
com.microsoft.visualstudio.debuggee.arguments: ' --additionalProbingPath /root/.nuget/packages
--additionalProbingPath /root/.nuget/fallbackpackages bin/Debug/netcoreapp2.0/Service2.dll'
com.microsoft.visualstudio.debuggee.killprogram: /bin/bash -c "if PID=$(pidof
-x dotnet); then kill $PID; fi"
com.microsoft.visualstudio.debuggee.program: dotnet
com.microsoft.visualstudio.debuggee.workingdirectory: /app
links:
- rabbitmq:rabbit
volumes:
- C:\Develop\vsts_tfs\Service2:/app:rw
- C:\Users\MYUSER\vsdbg:/remote_debugger:ro
- C:\Program Files\dotnet\sdk\NuGetFallbackFolder:/root/.nuget/fallbackpackages:ro
- C:\Users\MYUSER\.nuget\packages:/root/.nuget/packages:ro
我的 Service2 需要获得一些控制台输入,所以我需要在交互式控制台中按“输入”。不幸的是,我没有打开任何控制台窗口 - 但我在调试窗口中看到我的 Service2 的输出告诉我按回车 - 我只是无法按回车。
关于this question,对于 C++ 项目,调试菜单中有一个所谓的“Linux 控制台”——但我没有这个按钮。我也尝试通过安装“Visual C++ for Linux-Development”功能来获得它,但它没有帮助。
这是我的调试菜单的样子: 有什么想法可以打开控制台窗口来控制 docker-container 中的应用程序吗?
正如旁注:等待进入的应用程序仅用于开发目的,因为它在不使用 Web 前端的情况下将命令发送到 RabbitMQ 管道。可以在 docker 之外启动它,但它会破坏“通过按一个按钮运行它们”(并且无需设置多个启动项目)的舒适性,并且会添加 docker 和非 docker 组件的混合到我的解决方案。
【问题讨论】:
-
在这种情况下哪个服务正在等待输入?
service1或service2? -
这是 Service2。我还尝试在 docker-compose 文件中将 Service1 与 Service2 交换,但没有成功。
-
@Compufreak 你有没有找到解决方案?我遇到了同样的问题。
-
不幸的是,我不记得 3 年前我是如何解决这个问题的,我再也找不到项目来查找它了。我可能没有找到解决方案,否则我应该在此处将其作为回复发布。对不起!
标签: .net docker visual-studio-2017