2017-06-28 3 views
1

Ich arbeite durch das Frühjahr Tutorial hier;Docker Bild für Spring/RabbitMQ tutorial Ergebnisse in Verbindung verweigert

Messaging with RabbitMQ

fand ich diese Frage, aber es hat meine Frage nicht im Tutorial gefunden in Bezug auf die docker-compose.yml Datei befassen;

Spring RabbitMQ tutorial results in Connection Refused error

Ich habe alle notwendigen Schritte bis zum tatsächlichen Laufe der Anwendung, an welcher Stelle ich bin immer ConnectException Ausnahmen darauf hindeutet, dass der Server läuft nicht läuft oder nicht korrekt abgeschlossen werden.

Die im Tutorial angegebene Datei docker-compose.yml lautet wie folgt;

rabbitmq: 
image: rabbitmq:management 
ports: 
    - "5672:5672" 
    - "15672:15672" 

Im Grunde bin ich nicht sicher, was diese Docker-compose Datei tatsächlich der Fall ist, weil sie nicht den RabbitMQ Server einzurichten scheint wie das Tutorial schlägt vor (oder zumindest nicht in der Art und Weise das Tutorial erwartet). Ich bin auch ziemlich neu in Docker, also täusche ich mich vielleicht in der Annahme, dass diese Datei eine neue Instanz des RabbitMQ-Servers ausführen würde.

Wenn ich docker-compose up ausführen, bekomme ich die folgende Konsolenausgabe;

rabbitmq_1 | 
rabbitmq_1 | =INFO REPORT==== 28-Jun-2017::13:27:26 === 
rabbitmq_1 | Starting RabbitMQ 3.6.10 on Erlang 20.0-rc2 
rabbitmq_1 | Copyright (C) 2007-2017 Pivotal Software, Inc. 
rabbitmq_1 | Licensed under the MPL. See http://www.rabbitmq.com/ 
rabbitmq_1 | 
rabbitmq_1 |    RabbitMQ 3.6.10. Copyright (C) 2007-2017   Pivotal Software, Inc. 
rabbitmq_1 | ## ##  Licensed under the MPL. See http://www.rabbitmq.com/ 
rabbitmq_1 | ## ## 
rabbitmq_1 | ########## Logs: tty 
rabbitmq_1 | ###### ##  tty 
rabbitmq_1 | ########## 
rabbitmq_1 |    Starting broker... 
rabbitmq_1 | 
rabbitmq_1 | =INFO REPORT==== 28-Jun-2017::13:27:26 === 
rabbitmq_1 | node   : [email protected] 
rabbitmq_1 | home dir  : /var/lib/rabbitmq 
rabbitmq_1 | config file(s) : /etc/rabbitmq/rabbitmq.config 
rabbitmq_1 | cookie hash : DTVsmjdKvD5KtH0o/OLVJA== 
rabbitmq_1 | log   : tty 
rabbitmq_1 | sasl log  : tty 
rabbitmq_1 | database dir : /var/lib/rabbitmq/mnesia/[email protected] 

... plus eine Ladung von INFO-Berichten. Dies führte mich zu der Annahme, dass der RabbitMQ-Server betriebsbereit war, aber anscheinend nicht, da ich keine Verbindung herstellen kann.

Die einzige Möglichkeit, dies zu erreichen, ist die manuelle Installation von Erlang und RabbitMQ (auf einem Windows-System hier), die mich das Tutorial zu beenden scheint.

Warum wird Docker überhaupt in diesem Tutorial erwähnt? Die docker-compose.yml scheint nicht zu tun, was das Tutorial vorschlägt.

Was macht diese Datei eigentlich hier und wie würde man RabbitMQ in einem Andock-Container für die Zwecke dieses Tutorials ausführen? Ist das ein Problem mit Portnummern?

+0

Docker wird in Windows (imo) leicht unterstützt. Startet docker eine virtuelle Maschine oder verwendet Sie Hyper-v? – Eich

+0

@Eich, Diese spezielle Maschine ist im Besitz des Unternehmens und wir werden aufgefordert, Docker Toolbox zu verwenden, so glaube ich, dass es VirtualBox im Gegensatz zu dem Hyper-V einer vollständigen Windows Docker-Installation verwendet. – ionised

Antwort

3

Es stellt sich heraus, dass das Problem mit der Spring RabbitMQ-Vorlage Verbindungsinformationen war.

Das Spring-Tutorial setzt die normale manuelle Installation von RabbitMQ (plus Erlang) voraus, und die RabbitMQ Spring-Vorlage verwendet einige Standardverbindungsparameter, die nicht kompatibel mit dem im Tutorial angegebenen Bild in der Datei docker-compose sind.

Um dies zu lösen, musste ich eine Spring application.properties Datei hinzufügen und sie dem Ordner resources in meiner Anwendungsverzeichnisstruktur hinzufügen. Als nächstes musste ich die IP-Adresse meines Docker-Containers mit dem folgenden Befehl finden;

docker-machine ip 

die gibt die IP-Adresse. Ich fügte der application.properties Datei die folgenden Parameter hinzu;

spring.rabbitmq.host={docker-machine ip address} 
spring.rabbitmq.port=5672 
spring.rabbitmq.username=guest 
spring.rabbitmq.password=guest 

Der Port, Benutzername und Passwort hier sind alle Standardwerte und können in der RabbitMQ Dokumentation.

Dadurch konnte ich meine Anwendung ordnungsgemäß mit dem RabbitMQ-Server verbinden, der im Docker-Container ausgeführt wird.

Es scheint, dass das Spring Tutorial etwas unvollständig ist, da es den Leser nicht darüber informiert, dass einige zusätzliche Schritte erforderlich sind, wenn die RabbitMQ docker-compose Datei über die manuelle Installation von RabbitMQ verwendet wird.

Verwandte Themen