2017-09-25 5 views
0

のVisual Studioの複数のドッキングウィンドウコンテナ用インタラクティブコンソールを表示私は現在、第三は、RabbitMQのある、2は、.NETコアコンソールアプリケーションです、複数のドッキングウィンドウコンテナとネットコア・プロジェクトを開発しています。は2017

私の目標は、ドッキング用のコンテナで実行されているコンソールアプリケーションのうち少なくとも1つのコンソールアプリケーションでenterを押すことができるコンソールウィンドウを開くことです。

私は私のコンソールアプリケーションを右クリックし、「=>ドッカーサポートを追加」をクリックすることにより、ドッキングウィンドウ・サポートを追加しました。

これは私のドッキングウィンドウ-構成ファイルです:

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" 

これは私のドッキングウィンドウが-構成-override.ymlです: version: '3'

しかし、サービス2-コンテナを実行するときに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」を押す必要があります。残念ながら私はコンソールウィンドウを開くことはできませんが、デバッグウィンドウにService2の出力が表示され、Enterを押すように指示されています。

this questionについては、C++プロジェクトの場合、デバッグメニューには「Linuxコンソール」がありますが、このボタンはありません。私はまた、 "Visual C++ for Linux-Development" -Featureをインストールすることでそれを手に入れようとしましたが、それは助けになりませんでした。

これは私のデバッグ・メニューがどのように見えるかです:私は私のドッキングウィンドウ、容器内のアプリケーションを制御するためのコンソールウィンドウを開くことができますどのように No Linux Console button 任意のアイデア?

ちょうどのサイドノート:入力待機中のアプリケーションは、Webフロントエンドを使用せずにRabbitMQパイプラインにコマンドを送信するため、開発目的にすぎません。ドッキングウィンドウのこの外側を開始することが可能であろうが、それは「一つのボタンを押すことによって、それらすべてを実行している」(および複数のスタートアッププロジェクトを設定せず)の快適さを破壊するであろうとするdocker-と非ドッキングウィンドウ-成分の混合物を追加します私の解決策。

+0

? 'service1'または' service2'? –

+0

サービス2です。私はまた、ドッキング用ファイルでService1とService2をスワップしてみましたが、成功しませんでした。 – Compufreak

答えて

1

PS:今の答えとしてコメントを使用して、私はあなたがあなたのドッキングウィンドウ-構成

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" 

から2つの変更を加える必要がある

をフォーマットする必要があるので、今docker-composeは、標準入力からの入力を取ってサポートしていないとそれをコンテナに渡すので、デバッグコンソールからセッションを続けることはできません。別の端末を実行して実行する必要があります

docker attach <foldername>_service2_1 

基本的には、コンテナの名前またはIDを指定する必要があります。その後、コンテナが継続されますEnterキーを押し、さらに、この場合の入力を待っているサービス

+0

この回答をお寄せいただきありがとうございます。残念ながら、Visual Studioデバッガでは、docker-compose-fileに 'entrypoint:tail -f/dev/null'を入れて何らかの種類の注入を開始するので、 dockerは、おそらく私のアプリケーションではなくtail -f/dev/nullをつかんでいます:/ – Compufreak

+0

質問にもオーバーライドymlを投稿できますか? –

+0

私のoverride.ymlには 'version:3'だけが含まれています。私はあなたがVisual Studioが使用するものを求めていると思います。 Visual StudioのDocker-Outputを私の質問に追加しました。あなたが求めたものが含まれているはずです。 – Compufreak