在Docker中优雅地停止tomcat

我在运行tomcat的Docker容器上有以下要求:

  1. 启动tomcat作为后台进程(catalina.sh启动)
  2. 运行应用特定的configuration
  3. 停止tomcat(catalina.sh停止)
  4. 在前台启动tomcat(catalina.sh运行)

但是,在tomcat初始化之前,因为应用程序configuration已经启动,所以我无法使其工作。 而且,由于tomcat仍处于closures过程中,因此步骤4失败。

我如何改变这个过程:

  1. 启动tomcat作为后台进程
  2. 等待启动
  3. 运行应用特定的configuration
  4. closurestomcat
  5. 等待关机
  6. 启动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脚本非常糟糕。 任何帮助将不胜感激。