2016-05-15 12 views
1

Ich baue einen hazelcast docker Container.Aber wenn ich hazelcast Container laufen, druckt es nur einige Startprotokolle, ohne wirklich zu laufen. Die Dockerfile ist:hazelcast docker container kann nicht kontinuierlich

#centos7_jdk7 is a centos7 operating system installing jdk7 
FROM tianshangdeyun/centos7_jdk7 
#hazelcast-3.6.1 is download from hazelcast offical site 
COPY hazelcast-3.6.1 /hazelcast-3.6.1 
#add start hazelcast script 
COPY run.sh /run.sh 
RUN chmod 777 /run.sh 
expose 5701 
CMD ["/run.sh"] 

Die run.sh ist:

#!/bin/bash 
/hazelcast-3.6.1/bin/server.sh 

ich den Hazelcast Behälter mit 'Docker Lauf Hazelcast: 3.6.1' laufen. Das Protokoll ist Drucke ist: enter image description here Aber "Docker ps" kann den Prozess nicht sehen. Wünschen Sie Ihre Hilfe.

Antwort

1

Das Problem ist, dass server.sh startet die Java-Anwendung, die nicht im Vordergrund ausgeführt wird. Dies bedeutet, dass server.sh den Server startet und sich selbst beendet. Ihr run.sh-Skript wird also ebenfalls beendet, und docker denkt, dass die Arbeit erledigt ist, und beendet, obwohl hazelcast noch läuft. Dies ist ein häufiges Problem beim Andocken einiger Anwendungen.

Soweit ich das beurteilen kann, sehe ich keine native Möglichkeit, Haselnuss im Vordergrund zu laufen. Was Sie dann tun können, ist server.sh zu ändern. In diesem Fall ist die Änderung sehr einfach, alles, was Sie tun müssen, ist eine warten Aussage in server.sh gegen Ende hinzuzufügen, nach den echo $! > ${PID_FILE}

if [ -z "${PID}" ]; then 
    echo "Process id for hazelcast instance is written to location: {$PID_FILE}" 
    $RUN_JAVA -server $JAVA_OPTS com.hazelcast.core.server.StartServer & 
    echo $! > ${PID_FILE} 
    wait 
else 
    echo "Another hazelcast instance is already started in this folder. To start a new instance, please unzip 3.6.1.zip/tar.gz in a new folder." 
    exit 0 
fi 

Die wait-Anweisung, bis die Java-Anwendung warten wird beendet und kehrt dann zurück, sodass Ihre run.sh zurückkehrt und Ihr Andockcontainer beendet wird. Versuchen Sie das, es wird funktionieren!

+0

Das Starten von Skripten, die mit einer Anwendung ausgeliefert werden (in diesem Fall 'server.sh'), ändert sich häufig mit der neueren Version. Meine Antwort funktioniert möglicherweise nicht mit Version anders als 3.6.1 –

+0

Das ist der Punkt. Danke @Christophe Schmitz –