Sto utilizzando i dockerfile per creare un contenitore semplice. Ecco l'Dockerfile
:Come eseguire uno script di shell utilizzando file docker CMD
FROM XXXXXXX:5003/base-java
MAINTAINER XXXXX
ADD pubsub/ /opt/pubsub/
CMD ["/opt/pubsub/run.sh"]
Contenuto run.sh
è la seguente:
#!/bin/bash
nohup java -jar /opt/pubsub/publish.jar &
nohup java -jar /opt/pubsub/subscribe.jar &
Questo è semplice applicazione java per pub/sub
.
Ora ho un altro contenitore che esegue rabbitmq e sto collegando i 2 contenitori, tuttavia ognuno dei miei tentativi è appena fallito e il mio contenitore pub/sub
non viene avviato. Qualcuno può consigli su come debocciare questo problema? In qualche modo i registri docker non hanno nulla.
Ecco come stanno collegando i contenitori: sudo docker run -d -P --name pub_sub --link rabbitmq:rabbitmq1 image_pub_sub
Ed ecco come sto usando il nome alias nel mio codice 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(); }
mi aspettavo che il mio codice pubblicare sarà una coda nel contenitore rabbitmq e inizia a inviare messaggi. Il mio codice di sottoscrizione si collegherà fondamentalmente allo stesso rabbitmq e inizierà a leggere i messaggi.
Quando faccio funzionare l'ordine non succede nulla ma si limita a stampare una lunga id del nuovo contenitore e exits..When corro sudo docker ps -a
, posso vedere il seguente:
e8a50d5aefa5 image_pub_sub:latest "/opt/pubsub/run.sh" 32 minutes ago Exited (0) 32 minutes ago pub_sub
Quindi questo significa che il mio contenitore non è in esecuzione.
Proprio ora ho provato aggiornando il /etc/hosts
lanciando un nuovo contenitore utilizzando il seguente comando: sudo docker run -i -t image_pub_sub /bin/bash
. Modificato il /etc/hosts
di questo nuovo contenitore e ha aggiunto la seguente voce <IP_ADDRESS> rabbitmq1
e corse il mio script /opt/pubsub/run.sh
e aggiunge il file nohup con i seguenti messaggi:
Message Sent
[x] Received 'Hello'
Message Sent
Message Sent
[x] Received 'Hello'
È necessario fornire ulteriori informazioni; quali comandi hai usato per collegare i contenitori, qual è stato il risultato e cosa ti aspettavi? –
Si prega di aggiungere questo alla domanda, piuttosto che come un commento. E facci sapere cosa succede quando esegui i comandi (il contenitore è ancora in esecuzione? Come fai a sapere che non funziona?).Inoltre, ottieni una shell nel contenitore e verifica la connessione al contenitore rabbitmq. –
Grazie. Al momento non è chiaro se si ha un problema di rete o un problema di code/rabbitmq. Cosa succede se si esegue 'docker exec -it pub_sub ping rabbitmq1'? –