Ich verwende Dockerfiles, um einen einfachen Container zu erstellen. Hier ist die Dockerfile
:So führen Sie ein Shell-Skript mit dockerfiles CMD
FROM XXXXXXX:5003/base-java
MAINTAINER XXXXX
ADD pubsub/ /opt/pubsub/
CMD ["/opt/pubsub/run.sh"]
Inhalt von run.sh
ist wie folgt:
#!/bin/bash
nohup java -jar /opt/pubsub/publish.jar &
nohup java -jar /opt/pubsub/subscribe.jar &
Dies ist einfache Java-Anwendung für pub/sub
.
Jetzt habe ich einen anderen Container running rabbitmq und ich verbinde die 2 Container aber jeder meiner Versuch hat gerade versagt und mein pub/sub
Container startet nicht. Kann jemand raten, wie man dieses Problem debuggen kann? Irgendwie hat Docker Logs nichts.
Hier ist, wie ich die Behälter am Verknüpfung: sudo docker run -d -P --name pub_sub --link rabbitmq:rabbitmq1 image_pub_sub
Und hier ist, wie ich den Alias-Namen in meinem pub/sub
Code bin mit
factory = new ConnectionFactory();
factory.setHost("rabbitmq1");
try { connection = factory.newConnection();
channel = connection.createChannel();
channel.queueDeclare("pub", true, false, false, null);
}
catch (IOException e) { // TODO Auto-generated catch block
e.printStackTrace(); }
Ich hatte erwartet, dass meine veröffentlichen Code eine Warteschlange erstellen wird im Rabbitmq-Container und starten Sie Push-Nachrichten. Mein Teilnehmercode wird im Grunde mit dem selben Rabbitmq verbunden und fängt an, die Nachrichten zu lesen.
Wenn ich den Befehl nichts laufen geschieht es druckt nur eine lange ID des neuen Container und exits..When ich sudo docker ps -a
laufen, kann ich sehen, wie folgt:
e8a50d5aefa5 image_pub_sub:latest "/opt/pubsub/run.sh" 32 minutes ago Exited (0) 32 minutes ago pub_sub
Dies bedeutet also, mein Behälter nicht ist Laufen.
Gerade habe ich getestet, indem Sie die /etc/hosts
aktualisieren, indem Sie einen neuen Container mit dem folgenden Befehl starten: sudo docker run -i -t image_pub_sub /bin/bash
. Veränderte die /etc/hosts
diesen neuen Container und hinzugefügt, um den folgenden Eintrag <IP_ADDRESS> rabbitmq1
und lief meinen Skript /opt/pubsub/run.sh
und es fügt die nohup-Datei mit den folgenden Meldungen:
Message Sent
[x] Received 'Hello'
Message Sent
Message Sent
[x] Received 'Hello'
Sie müssen weitere Informationen angeben; Mit welchen Befehlen haben Sie die Container verknüpft, was war das Ergebnis und was haben Sie erwartet? –
Bitte fügen Sie dies der Frage und nicht als Kommentar hinzu. Und lassen Sie uns wissen, was passiert, wenn Sie die Befehle ausführen (läuft der Container noch? Woher wissen Sie, dass es nicht funktioniert?).Holen Sie auch eine Schale in den Behälter und testen Sie die Verbindung mit dem Rabbitmq-Container. –
Danke. Im Moment ist es nicht klar, ob Sie ein Netzwerkproblem oder ein code/rabbitmq-Problem haben. Was passiert, wenn Sie 'docker exec -it pub_sub ping rabbitmq1' ausführen? –