在Visual Studio 2017中显示多个Docker容器的交互式控制台
我目前正在开发一个带有多个docker容器的.Net Core-project,其中两个是.NET Core Console应用程序,第三个是RabbitMQ。
我的目标是打开一个控制台窗口,在那里我可以按下至less一个Docker容器中运行的控制台应用程序的input。
我通过右键单击我的控制台应用程序并单击“添加=> 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容器时会进行以下重写:
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
我的服务2需要获得一些控制台input,所以我需要在交互式控制台中按“进入”。 不幸的是,我没有得到任何控制台窗口打开 – 但我看到我的Service2的输出在debugging窗口告诉我按回车 – 我只是不能按Enter键。
关于这个问题 ,对于C ++项目来说,Debug-Menu中有一个所谓的“Linux控制台” – 但是我没有这个button。 我也尝试通过安装“Visual C ++ for Linux开发”-Feature来获得它,但它没有帮助。
这是我的debugging菜单的样子: 任何想法如何打开一个控制台窗口来控制我的docker集装箱内的应用程序?
正如旁注 :等待input的应用程序仅用于开发目的,因为它将命令发送到RabbitMQpipe道而不使用Web前端。 这将有可能在Docker外部启动,但是它会破坏“按下一个button来运行它们”(并且不设置多个启动项目)的舒适度,并且会添加docker和非docker组件的混合物我的解决scheme
PS:现在使用注释作为答案,因为我需要格式化
你需要对你的docker-compose做2个修改
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" stdin_open: true tty: true rabbitmq: image: "rabbitmq:3-management" ports: - "8082:15672" - "5672:5672"
现在, docker-compose
不支持从标准input接收input并将其传递给容器,因此无法从debugging控制台继续会话。 您需要运行另一个terminal并运行
docker attach <foldername>_service2_1
基本上你需要给容器的名称或ID。 然后你按下input该容器将继续进一步
- Docker退出,状态码为139
- 如何在.NET核心可执行文件中监听来自Docker的信号?
- 将.net核心应用程序部署到docker会给“Microsoft.DotNet.Props”找不到错误
- Ubuntu上的Docker .Net Core应用程序不在localhost:8000中打开
- 我应该使用docker的用户机密或环境variables
- DotNet构buildCLI在terminal中工作,但不在Docker构build中
- dotnet docker / bin / sh:1:[dotnet ,:找不到
- .Net Core Clrdebugging器VSDBG在Windows Docker容器中连接到远程进程时暂停应用程序
- 鉴于下面描述的错误,人们如何在Ubuntu / Docker的ASP.NET Core Web API中进行身份validation?