在Docker中优雅地停止tomcat
我在运行tomcat的Docker容器上有以下要求:
- 启动tomcat作为后台进程(catalina.sh启动)
- 运行应用特定的configuration
- 停止tomcat(catalina.sh停止)
- 在前台启动tomcat(catalina.sh运行)
但是,在tomcat初始化之前,因为应用程序configuration已经启动,所以我无法使其工作。 而且,由于tomcat仍处于closures过程中,因此步骤4失败。
我如何改变这个过程:
- 启动tomcat作为后台进程
- 等待启动
- 运行应用特定的configuration
- closurestomcat
- 等待关机
- 启动tomcat作为前台进程。
我已经破解了以下内容,以便我的开发活动可以继续进行,但是如果容器停止,以下代码将不会正确closurestomcat。
case $COMMAND in start ) echo "Configuring OpenAM.." cp /artifacts/openam.war /opt/tomcat/webapps/openam.war cat /opt/openam-install.properties /opt/tomcat/bin/startup.sh sleep 20 ls -lart cd /artifacts/configurator unzip configurator.zip java -jar openam-configurator-tool-13.5.0.jar --acceptLicense --file /opt/openam-install.properties echo "Configuration Complete." tail -f /opt/tomcat/logs/catalina.out ;;
你可能已经猜到了。 编写shell脚本非常糟糕。 任何帮助将不胜感激。