Używam dockerfiles do zbudowania prostego kontenera. Oto Dockerfile
:Jak uruchomić skrypt powłoki przy użyciu dockerfiles CMD
FROM XXXXXXX:5003/base-java
MAINTAINER XXXXX
ADD pubsub/ /opt/pubsub/
CMD ["/opt/pubsub/run.sh"]
Zawartość run.sh
jest następujący:
#!/bin/bash
nohup java -jar /opt/pubsub/publish.jar &
nohup java -jar /opt/pubsub/subscribe.jar &
Jest to prosta aplikacja Java dla pub/sub
.
Teraz mam kolejny kontener z królikiem i łączę 2 kontenery, jednak każda moja próba właśnie się nie udała i Mój kontener pub/sub
się nie uruchamia. Czy ktoś może doradzić, jak rozwiązać problem z debuggowaniem? W jakiś sposób dzienniki dokowania nic nie mają.
Oto jak mam łączenie pojemników: sudo docker run -d -P --name pub_sub --link rabbitmq:rabbitmq1 image_pub_sub
A oto jak używam alias w kodzie pub/sub
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(); }
Spodziewałem się, że mój opublikować kod utworzy kolejkę w kontenerze rabbitmq i zacznij przesyłać wiadomości. Mój kod subskrybenta połączy się z tym samym królikiem i zacznie czytać wiadomości.
Kiedy biegnę Zdarza się po prostu drukuje długiego identyfikatora nowego pojemnika i exits..When biegnę sudo docker ps -a
się nic polecenia, widzę następujące:
e8a50d5aefa5 image_pub_sub:latest "/opt/pubsub/run.sh" 32 minutes ago Exited (0) 32 minutes ago pub_sub
Więc oznacza to mój pojemnik nie jest bieganie.
Właśnie testowałem aktualizując /etc/hosts
, uruchamiając nowy kontener za pomocą następującego polecenia: sudo docker run -i -t image_pub_sub /bin/bash
. Zmodyfikował /etc/hosts
tego nowego pojemnika i dodaje się następujący wpis <IP_ADDRESS> rabbitmq1
i prowadził mój skrypt /opt/pubsub/run.sh
i dołącza plik nohup z następujących komunikatów:
Message Sent
[x] Received 'Hello'
Message Sent
Message Sent
[x] Received 'Hello'
Musisz podać więcej informacji; jakich poleceń użyłeś do połączenia kontenerów, jaki był rezultat i czego oczekiwałeś? –
Proszę dodać to pytanie, a nie jako komentarz. I daj nam znać, co się dzieje, gdy uruchomisz komendy (czy kontener nadal działa? Skąd wiadomo, że nie działa?).Ponadto, zdobądź powłokę w kontenerze i przetestuj połączenie z kontenerem rabbitmq. –
Dzięki. W tej chwili nie jest jasne, czy masz problem z siecią lub problem z kodem/rabbitmq. Co się stanie, jeśli uruchomisz 'docker exec -it pub_sub ping rabbitmq1'? –