2017-02-05 18 views
1

私はドッキングする必要があるjetty mavenプラグイン"run-forked" goalを使用するアプリケーションを持っています。何が起きるかは、mavenが起動することです。コンテナは約10秒間しか存在せず、子がJVMプロセスをforkした後にmavenが終了すると、終了します。mvn jetty:ドッキング用のコンテナ内にランフォークされていますか?

私は多くのオプションを調査しました。これはMavenのはDocker waits for a SIGTERMので、イメージがビルドされません実行し続けるものの、

ENTRYPOINT [ "/entrypoint.sh" ] 
CMD [ "jetty:run-forked > /tmp/log 2>&1" ] 

しかし:私はうまくいくかもしれないと思った1つのオプションはtrueに「waitForChild」を設定することで、その後 このような何かを行います。

なぜ私はj​​etty:run-forkedを使用する必要があるのだろうと思っているのであれば、コードにstatic linked library that needs a JVMが必要なためです。

これは不可能だので、私は私が設定して、Javaについて全くわからないんだけど、作品巧妙なトリックは、このようなものである...、

答えて

1

タオルで投げる準備ができています:

あなたのdockerfileで

、そのようなカスタムスクリプトを追加します。それを反映するために、あなたのENTRYPOINTを編集し

COPY myscript.sh /bin/myscript.sh # Remember to make this executable! 

ENTRYPOINT ["/bin/myscript.sh"] 
それはもはや、容器内のPID 1であるので、あなたの桟橋/ MVNものが別のプロセスを生成して終了した後も稼働し続けこれはあなたのコンテナを確保する

#!/bin/bash 

# Run Java/mvn commands here 
... 
jetty:run-forked > /tmp/log 2>&1 

# Throw in a shell command that simply executes forever 
tail -f /dev/null 

あなたmyscript.shは、このような少し何かを探す必要はありませんでしたシェルスクリプトはmyscript.shです。このシェルスクリプトは、tail -fのために永遠に実行し続けます。

+0

これは機能します。ありがとうございました。確かにきちんとしたトリック、それ以上のことは、それは明確かつ単純です。 –

関連する問題