2016-05-25 6 views
1

Dockerfileはtomcatに対して正しく動作します。 Tomcatの起動後、私はantスクリプトを起動する必要があります。 catalina.shは別のrun.shファイルから開始されます。だから、Dockerfileはあり CMD [ "/tmp/run.sh"]Tomcatが起動した後にDockerがantスクリプトを実行しますか?

run.shファイルは、行の下にあります

  • catalina.shラン
  • antscript

のTomcat antスクリプトは呼び出されません。

  • catalina.shラン& & antscripts

のTomcatは起動しますが、antscriptsが

私は後にAntスクリプトを自動的に呼び出すことができる方法はあり

を起動されません。私も同じよう他の可能性を試してみましたtomcatが始まる?私は後でドッカーのexecを使ってスクリプトを実行したくない。

+0

あなたのantscriptが実行されない理由は、catalina.shが決して完了しないためです。ドッカーでは、tomcatプロセスはフォアグラウンドにあり、antscriptは実行されません。 – Shibashis

+0

私はこの機能を実現するには、catalina.shの前にnohupコマンドでantscriptsを起動し、antscriptに遅延を追加する(sleepコマンドでラッパーシェルスクリプトを使用する)ことが考えられます。遅延はシンプルな時間ベースの待機になることもあれば、サーバの起動が完了して実行を開始するまでの間にTomcatログだけを見ることもできます。 – Shibashis

+0

nohupコマンドを使ってラッパースクリプトを実行してくれました。ありがとう – sandy

答えて

1

一つ、私は機能を実現すると考えることができ、catalina.sh前にnohupコマンドでantscriptsを開始

  • です
  • を追加し、antscriptに遅延を追加する(スリープコマンドでラッパーシェルスクリプトを使用する)。

遅延は、単純な時間ベースの待機することができ、またはサーバーの起動が実行を開始するために完了するまで、ちょうどTomcatのログを見ることができます。

1

あなたは次の方法でコマンドを書くことができます。

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

をそれはカタリナの実行開始後20秒でantscriptsを呼び出します。 tomcat開始予定時刻の時間を変更することができます。

また、あなたが開いて、いくつかのTCPポートを待つことができます方法の

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

catalina.shの実行後に&を使用していただきありがとうございます。私は、tomcatが起動してからantscriptを実行するまで待つスクリプトを起動できます。 – sandy

+0

しかし、問題は、スクリプト終了後にドッカー・コンテナが終了することです。 – sandy

関連する問題