Docker在tomcat启动后执行ant脚本?

Dockerfile对于tomcat正常工作。 在tomcat启动后,我必须触发ant脚本。 catalina.sh是从一个单独的run.sh文件启动的。 所以,Dockerfile有CMD [“/tmp/run.sh”]

run.sh文件有下面几行:

  • catalina.sh运行
  • antscript

Tomcat启动但不调用ant脚本。 我也尝试了其他的可能性,如:

  • catalina.sh run && antscripts

tomcat启动但是antscripts不被触发

有没有办法,我可以在tomcat启动后自动调用ant脚本? 我不想通过使用docker exec来运行脚本。

其中一个方法,我可以想到实现这个function

  • 在catalina.sh之前用nohup命令启动antscripts,
  • 并在ant脚本中添加一个延迟(使用包含睡眠命令的包装器脚本)。

延迟可以是简单的基于时间的等待,或者可以只监视tomcat日志,直到服务器启动完成以开始执行。

你可以写下你的命令:

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

在catalina执行开始之后的20秒钟内,它会调用antscripts。 您可以更改Tomcat启动时间。

你也可以等待打开一些TCP端口:

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