2017-09-25 2 views
0

Ich bin zur Zeit ein .Net Core-Projekt mit mehreren Docker Container, 2 sind .NET Core Console-Anwendungen, der dritte ist RabbitMQ.Zeigen Sie interaktive Konsole für mehrere Docker Container in Visual Studio 2017

Mein Ziel ist es, ein Konsolenfenster zu öffnen, in dem ich für mindestens eine der Konsolenanwendungen, die in den Andockcontainern ausgeführt werden, die Eingabetaste drücken kann.

Ich habe Docker-Unterstützung durch meine Konsolenanwendungen Rechtsklick und "Hinzufügen => Docker Support" klicken.

Das ist mein Docker-Compose-Datei:

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" 

Das ist mein Docker-Compose-override.yml ist: version: '3'

Aber Visual Studio führt die folgenden Überschreibungen, wenn die Service2-Behälter läuft :

Mein Service2 muss einige Konsoleneingaben bekommen, also muss ich in einer interaktiven Konsole "Enter" drücken. Leider bekomme ich kein Konsolenfenster zum Öffnen - aber ich sehe die Ausgabe meines Service2 im Debug-Fenster und sage mir, dass ich Enter drücken soll - ich kann einfach nicht Enter drücken.

Zu this question, für C++ - Projekte gibt es im Debug-Menü eine sogenannte "Linux Console" - aber ich habe diese Schaltfläche nicht. Ich habe es auch versucht, indem ich das "Visual C++ für Linux-Entwicklung" -Feature installiert habe, aber es hat nicht geholfen. Diese

ist, wie mein Debug-Menü wie folgt aussieht: No Linux Console button Irgendwelche Ideen, wie ich ein Konsolenfenster öffnen kann die Anwendung in meinem Docker-Container zu kontrollieren?

Nur als Randnotiz: Die Anwendung warten auf Enter ist nur für Entwicklungszwecke, da es Befehle an die RabbitMQ-Pipeline ohne die Verwendung des Web-Frontend sendet. Es wäre möglich, dies außerhalb von Docker zu starten, aber es würde den Komfort zerstören, "alle auf Knopfdruck auszuführen" (und ohne mehrere Start-Projekte zu setzen) und würde eine Mischung aus Docker- und Nicht-Docker-Komponenten hinzufügen meine Lösung.

+0

welcher Dienst wartet auf die Eingabe in diesem Fall? 'service1' oder' service2'? –

+0

Es ist Service2. Ich habe auch versucht, Service1 mit Service2 in der Docker-Compose-Datei ohne Erfolg zu tauschen. – Compufreak

Antwort

1

PS: Kommentare als Antwort Verwendung für jetzt, da brauche ich die Formatierung

Sie müssen zwei Änderungen an machen Docker-komponieren

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" 

Jetzt docker-compose unterstützt keine Eingabe von stdin zu nehmen und Übergeben Sie es an den Container, so dass Sie die Sitzung von der Debug-Konsole aus nicht fortführen können. Sie müssen ein anderes Terminal ausführen und

ausführen
docker attach <foldername>_service2_1 

Grundsätzlich müssen Sie den Namen oder die ID des Containers angeben. Dann drücken Sie die Eingabetaste Der Container wird weiter

+0

Danke für diese Antwort, leider scheint es nicht zusammen mit dem Visual Studio Debugger zu funktionieren, da es einen 'entrypoint: tail -f/dev/null' in die docker-compose-Datei schreibt und den Prozess startet, indem er eine Art injiziert der Befehl in den Docker-Container, so docker Attach wahrscheinlich greift den Schwanz -f/dev/null und nicht meine Anwendung:/ – Compufreak

+0

Kannst du die Überschreibung Yml auch in der Frage? –

+0

Mein override.yml enthält nur 'version: 3', ich denke, Sie fragen nach dem Visual Studio. Ich habe die Docker-Ausgabe von Visual Studio zu meiner Frage hinzugefügt, sie sollte enthalten, wonach Sie gefragt haben. – Compufreak

Verwandte Themen