我正在开发一个包含多个docker容器的.Net Core项目,其中有两个是.NET Core控制台应用程序,第三个是RabbitMQ。
我的目标是打开一个控制台窗口,在其中至少可以按回车键运行docker容器中的一个控制台应用程序。
我通过右键单击我的控制台应用程序并点击“添加=> Docker支持”来添加了docker支持。
这是我的docker-compose文件:
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'
但是在运行Service2容器时,Visual Studio会进行以下覆盖: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需要获取一些控制台输入,所以我需要在交互式控制台中按下“Enter”键。不幸的是,我没有看到任何控制台窗口打开 - 但我可以在Debug-Window中看到我的Service2的输出,提示我按Enter键 - 我只是无法按下Enter键。
根据这个问题,对于C++项目,有一个所谓的“Linux Console”在Debug菜单中 - 但我没有这个按钮。我还尝试通过安装“Visual C++ for Linux-Development”功能来获取它,但没有帮助。
这是我的Debug菜单的样子:
有什么想法如何打开一个控制台窗口来控制我的docker容器中的应用程序吗?
顺便说一句:等待Enter的应用程序仅用于开发目的,因为它将命令发送到RabbitMQ管道而不使用Web前端。可以在docker外部启动它,但这将破坏“按一个按钮运行所有组件”的舒适性(而且不需要设置多个启动项目),并将docker和非docker组件混合到我的解决方案中。
service1
还是service2
? - Tarun Lalwani