Я пытаюсь запустить скрипт начальной загрузки pod (который в основном запускает программу java) после запуска tomcat в модуле. Мой модуль запускает один контейнер на основе кота. Вот фрагмент, над которым я работаю и перерабатываю:
- image: myreg/mydir/myimg:local
name: tomcat-adminapp
command: ["/bin/sh"]
args: ["-c", "$CATALINA_HOME/bin/startup.sh && /scripts/runUpg.sh"]
runUpg. sh script:
#!/bin/sh
ls -l $CATALINA_HOME/webapps/app/WEB-INF/lib/
chmod 755 $CATALINA_HOME/webapps/app/WEB-INF/lib/*
java -classpath "$CATALINA_HOME/webapps/app/WEB-INF/lib/*" com.myclass.Upg <args>
tail -f /dev/nul
Запускается tomcat, но выполнение моего скрипта завершается неудачно. Когда я запускаю c в модуль, я вижу, что война взорвалась, CATALINA_HOME установлен и процесс tomcat запущен. Но я вижу следующие ошибки скрипта в логах kubectl:
ls: невозможно получить доступ '/ userhome / tomcat / webapps / app / WEB-INF / lib /': нет такого файла или каталога, chmod: не может получить доступ '/ userhome / tomcat / webapps / app / WEB-INF / lib / *': нет такого файла или каталога Ошибка: не удалось найти или загрузить основной класс com.myclass.Upg Причина: java .lang.ClassNotFoundException: com .myclass.Upg
Из-за ошибки я предполагаю, что сценарий оболочки может не ждать, пока tomcat завершит sh своего запуска. Я не уверен, почему ..
Когда я запускаю скрипт изнутри модуля, он работает нормально.
Любые указатели здесь приветствуются ..
Обновление: Я подтвердил, что это действительно проблема времени. Когда я использую $CATALINA_HOME/bin/startup.sh && sleep 60 && /scripts/runUpg.sh
, сценарий работает нормально. Но я думаю, что это взломан sh и не является правильным способом для вызова класса в веб-приложении.