dockerはビルドフェーズ中にjava/undertowアプリケーションを起動する必要があり、実行フェーズで利用できるはずです。ただし、Javaプロセスの起動後は、Javaサーバーの起動に関連するコンテナの変更は保持されません。dockerコンテナはバックグラウンドでJavaを起動しません
この手順で行った変更はイメージに影響しません。
私のドッキングウィンドウのファイルの最後のコマンドは、私はこのコンテナを実行したとき、私はその出力がserver.logファイルを確認し、正常
StartServices - Services Started
開始サーバーしかし、ときに存在して見ることができます
RUN java -jar /svc/app/svc-0.0.1-SNAPSHOT.jar $2>server.log & sleep 5
であるIサービスを実行していない場合はコンテナを実行します。私はそれを手動で始めることができますが、私はそれをやりたいとは思いません。コンテナが稼働しているときに私のサーバをアップさせたい。
お知らせ
& sleep 5
私はこれらの5秒間待っていない場合は、それが作成されていないすべてのログになります。 Dockerは、Javaアプリケーションを起動させずにすぐにこのステップを放棄します。
でも "スリープ5"でも私のアプリケーションは起動しますが、ドッカーはイメージの変更を無視し、それらを適用しません。
「ドッカーを実行する」と、アプリケーションが実行されていません。ここ
はDockerfileです:
FROM anapsix/alpine-java
ENV TC_BASE=/opt/tc_base
ENV APP_BASE=$TC_BASE/svc
ENV PATH=.:$PATH
RUN apk update && apk add unzip
COPY files/build/lib/svc/target/svc-0.0.1-SNAPSHOT-bin.zip $APP_BASE/
COPY files/build/lib/api/src/main/resources/api.properties $TC_BASE/conf/api/
COPY files/build/lib/svc/src/main/resources/svc.properties $TC_BASE/conf/svc/
COPY files/build/lib/svc/src/main/resources/logback.xml $TC_BASE/conf/svc/
RUN cd $APP_BASE ; unzip -q svc-0.0.1-SNAPSHOT-bin.zip ; rm svc-0.0.1-SNAPSHOT-bin.zip ; mv svc-0.0.1-SNAPSHOT/* . ; rm -rf svc-0.0.1-SNAPSHOT
EXPOSE 7009
RUN java -jar $TC_BASE/svc/app/svc-0.0.1-SNAPSHOT.jar $2>server.log & sleep 5
待機中のプロセスがない場合、Dockerは常にコンテナを停止します。 'tail -f server.log' –
我々は建物のイメージについて話しています。この段階ではサーバーログに関心のある人はいません。 tail -f server.logを実行すると、ビルドプロセスは決して終了しません。 Javaプロセスは、イメージセットアップの一部としてバックグラウンドで実行する必要があります。 –
コンテナの実行時に実行する必要がある場合は、 'ENTRYPOINT'または' CMD'(またはその組み合わせ)に入れる必要があります。それが複数のことを編成して開始するのであれば、エントリポイントスクリプトが必要になるかもしれません。これはちょっと乱雑に聞こえる。なぜコンテナ内で複数のものを実行する必要がありますか? – johnharris85