2016-05-15 2 views
1

Я создаю контейнер для докеров с лесной каймой. Но когда я запускаю контейнер для орешника, он печатает только некоторые начальные журналы, которые не работают. Dockerfile является:Контейнер для докеров с лебедкой не может работать непрерывно

#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"] 

run.sh является:

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

Я бегу hazelcast контейнер с 'Docker выполнения hazelcast: 3.6.1'. Отпечаток: enter image description here Но «докер ps» не может видеть процесс. Пожелайте вам помочь.

ответ

1

Проблема заключается в том, что server.sh запускает приложение Java, которое не работает на переднем плане. Это означает, что server.sh запускает сервер, выйдя из него, поэтому ваш скрипт run.sh также выходит, и докер считает, что работа выполнена и завершается, даже несмотря на то, что hazelcast все еще работает. Это обычная проблема при докетировании какого-либо приложения.

Насколько я могу судить, я не вижу родного способа запуска hazelcast на переднем плане. Тогда вы можете изменить server.sh. В этом случае, модификация очень легко, все, что вам нужно сделать, это добавить ждать заявление в server.sh, ближе к концу, после 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 

Заявление ждать не будет ждать, пока приложения Java завершается, а затем возвращается, поэтому ваш run.sh будет возвращен, и ваш контейнер докера выйдет. Попробуйте, это сработает!

+0

Стартовые скрипты, поставляемые с приложением ('server.sh' в этом случае) часто меняются с более новой версией. Мой ответ может не работать с версией, отличной от 3.6.1. –

+0

Это точка. Спасибо @ Christophe Schmitz –

Смежные вопросы