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

时间:2016-05-25 12:47:59

标签: tomcat ant docker

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

run.sh文件位于以下行:

  • catalina.sh run
  • antscript

Tomcat启动但未调用ant脚本。我还尝试了其他可能性:

  • catalina.sh run&& antscripts

tomcat启动但是没有触发antscripts

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

2 个答案:

答案 0 :(得分:1)

您可以通过下一种方式为您编写命令:

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)

答案 1 :(得分:1)

我可以想到实现功能的方法之一是

  • 在catalina.sh之前使用nohup命令启动antscripts,
  • 并在antscript中添加延迟(使用带有sleep命令的包装shell脚本)。

延迟可以是基于时间的简单等待,也可以只是观察tomcat日志,直到服务器启动完成才能开始执行。