2017-02-02 12 views
5

私はspring-bootプロジェクトを持っています。私は自動的にjarをコンテナに再配置したいと思います。 正しく行う方法は? これまでのところ、私が見るのはこの方法です。それは正しい方法です?ドッキング・コンテナのスプリング・ブート・アプリケーションを再デプロイしますか?

# cd /home/jdev; 
# sudo docker stop ca_spring_boot; 
# sudo docker rm ca_spring_boot; 
# sudo docker rmi ca_app_image; 
# sudo docker build -t ca_app_image .; 
# sudo docker run -d -p 8888:8080 --name ca_spring_boot ca_app_image 

そして、私のDockerfile

FROM java:8 
VOLUME /tmp 
EXPOSE 8080 
ADD docker-storage/jenkins/workspace/CA/build/libs/ca-1.0.jar app.jar 
RUN bash -c 'touch /app.jar' 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=container","-jar","/app.jar"] 

感謝。

+0

実稼働サーバーに再デプロイしますか? –

+0

いいえ、これはDEVサーバーです。ちょうどCIとCDを作ってドッカーを少し学びたいと思っています。 – JDev

答えて

6

ボリュームをマウントしてそこにapp.jarを置くことができます。画像を再構築する必要はないので、コンテナを再起動するだけです。

Dockerfile

FROM java:8 
ENTRYPOINT [ "sh", "-c", "java -jar /mnt/app.jar" ] 

/ドッキングウィンドウであなたのapp.jarを入れて/春/

ビルドとは、実行します。

docker build -t spring_test . 
docker run -d -v /docker/spring/:/mnt -p 12384:8080 --name spring_test_running spring_test 

あなたは春のアプリケーションを更新する場合は、あなただけの操作を行います。

docker restart spring_test_running 
+0

良い解決策、私は間違いなく試してみます。 – JDev

+0

あなたのソリューションは機能します。ありがとうございました。そして、それは何のためのものなのか教えてください。 "-Djava.security.egd = file:/ dev /./ urandom" 私はそれが必要ですか?もしそうなら、何のために?それなしでも動作します。 – JDev

+1

このオプションは、スプリングアプリケーションには影響しません。デフォルトのランダム関数javaが使用するのは/ dev/randomです。オプションは "-Djava.security.egd = file:/ dev /./ urandom"オプションで/ dev/urandomに変更されます。 – Sha7x

1

previo私たちの答えは良いです。しかし、コードをテストするたびにコンテナを再起動する必要があります。しかし、私たちはこの問題を避けることができます。ちょうどSpring dev tool と上記のようにマウント先ディレクトリを使用してください。

+1

"java -jar"でSpringアプリケーションを実行している場合、Spring開発ツールは無効になります。 http://stackoverflow.com/a/37702560/3861751 – Sha7x

+0

はい、私はdev-toolsを使用しています。しかし、ほとんどそれを行う方法を理解していない..私はジェンキンスを持って、それは瓶、次のステップを作成する?私は何をする必要がありますか? – JDev

関連する問題