2016-05-25 2 views
1

Dockerfile работает правильно для tomcat. После запуска tomcat я должен запустить скрипты ant. catalina.sh запускается из отдельного файла run.sh. Так, Dockerfile имеет CMD [ "/tmp/run.sh"]Docker запускает скрипт муравья после запуска tomcat?

Файл run.sh имеет ниже строки:

  • catalina.sh пробег
  • antscript

Tomcat но ant скрипты не вызываются. Я также пробовал другие возможности, как:

  • catalina.sh пробег & & antscripts

Tomcat запускается, но antscripts не сработавшие

Есть ли способ, что я могу назвать муравей скрипты автоматически после того, как начинается tomcat? Я не хочу запускать скрипты после использования docker exec.

+0

Причина, по которой ваш антскрипт не выполняется, заключается в том, что вы Catalina.sh никогда не завершаете. С докером процесс tomcat находится на переднем плане и антскрипт не выполняется. – Shibashis

+0

Один из способов, я могу думать о достижении функциональности, запустив antscripts с командой nohup перед catalina.sh и добавив задержку в antscript (используйте сценарий оболочки оболочки с командой sleep). Задержка может быть простой, основанной на времени, или просто наблюдать за журналами tomcat до завершения запуска сервера, чтобы начать выполнение. – Shibashis

+0

с помощью команды nohup для запуска сценария обертки работал для меня. Спасибо – sandy

ответ

1

Одним из способов, я могу думать о завоевании функциональности является

  • Начиная antscripts с командой поЬир до catalina.sh,
  • и добавление задержки в antscript (используйте скрипт оболочки оболочки с командой sleep).

Задержка может быть простой, основанной на времени, или просто наблюдать за журналами tomcat до завершения запуска сервера, чтобы начать выполнение.

1

Вы можете написать вам команды следующий путь:

catalina.sh run & (sleep 20 && antscripts) 

Это будет вызывать antscripts в 20 секунд после начала выполнения Catalina. Вы можете изменить время для расчетного времени запуска tomcat.

Также вы можете ждать открыть некоторые TCP-порт:

catalina.sh run & ((while ! echo exit | nc localhost 8080; do sleep 10; done) && antscripts) 
+0

Благодарим вас за идею использования & after catalina.sh run. Я могу запустить скрипт, который будет ждать запуска tomcat, а затем выполнить анткрипты. – sandy

+0

Однако проблема заключается в том, что контейнер докера выходит после завершения скрипта. – sandy

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