2015-12-21 8 views
1

Я использую докер создать экземпляр tcserver и успешно останавливается, когда яКак перезапустить экземпляр tcserver в докере?

./tcruntime-ctl.sh остановить

Однако экземпляр не был успешно перезапущен, когда я

./tcruntime-ctl.sh пробег

причина в том, что PID файл (PID = 1) по-прежнему присутствует и не удаляется

Пожалуйста, обратите внимание, что я бег экземпляра tcserver как процесс переднего плана с помощью запустить команду

+0

может быть, вы можете использовать https://github.com/phusion/baseimage-docker, чтобы избежать PID 1 пб? Можете ли вы показать проигрыватель? Будет ли 'docker run --restart = always' помочь? Документ для docker запустит https://docs.docker.com/engine/reference/commandline/cli/#run – user2915097

+0

Если я выполняю 'docker run --restart = always', он перезапустит контейнер, если демон docker перезапустится. Я не хочу этого. Кстати, как вы относитесь к репродуктору ?? – meallhour

+0

Другим вариантом может быть «ENTRYPOINT tcruntime-ctl.sh start && tail -f/dev/null». Однако это приведет к запуску tcserver в качестве фонового процесса, и в этом случае, как убедиться, что контейнер также умирает, когда tcserver экземпляр остановлен ?? – meallhour

ответ

0

Если ошибка просто, что есть vestige pidfile из предыдущего запуска, обходным путем может быть удаление pidfile перед вызовом сценария tcruntime-ctl.sh. Поскольку срок службы экземпляра tcServer связан с экземпляром контейнера докера, можно с уверенностью предположить, что ранее был выведен процесс, упомянутый в pid-файле. Вы можете написать свой собственный сценарий, который очищает до exec ИНГ tcruntime.sh или предварять что-то вроде следующего:

#!/bin/sh 

pidfile=$(dirname $0)/../logs/tcserver.pid 
if [ -f $pidfile ] ; then 
    rm $pidfile 
fi