2016-06-13 4 views
0

私は一般的にDockerやWebアプリケーションの初心者です。 Kafka、Zookeeper、MongoDBを使用する大規模なSpring Boot JavaアプリケーションをDockerizeする必要があります。また、Gradleビルドツールも使用します。このアプリをDockerizeするにはどうすればよいでしょうか?私は1つのイメージでそれをDockerizeすべきか、あるいは各コンポーネントのために別々のイメージをDockerizeすべきですか?Kockka、Zookeeper、MongoDBのDockerize Spring Boot Javaアプリケーション

また、DockerfileにGradleビルドツールを組み込むにはどうすればよいですか?

ありがとうございます!

+0

現在、「大規模なJavaアプリケーション」は、Kafka、Zookeeper、およびMongoDBのcollat​​eralsの存在と正しい設定をどのように展開または保証していますか?これは、あなたがコンテナの土地に従うルートについての重要なヒントです。 「DockerfileにDockerfileを組み込む」というあなたの理解は何ですか?DockerfileをMakefileのようなものとして見ること - Dockerfileの構文要素としていくつかのレシピを与え、関連する "呼び出し"をファイルに書き込まなければならない?詳細を記入してください。ありがとう。 – Dilettant

+1

したがって、アプリケーションはSpring Bootを使用して実行されます。 Kafka、Zookeeper、およびMongoDBの設定を含む「application.properties」という外部設定ファイルがあります。 'sudo -u root java -Dspring.config.location ="設定ファイルの場所 "-jar javaApp.jar" DockerファイルへのGradleの組み込みに関して、私は今すぐ最初にGradleとDockerをデカップリングすることが最善であると思うのは、GradleにJARファイルを最初にビルドさせてから、Dockerでそれを動作させることです(後述)。 – pcsram

答えて

2

Gradleを使用しているため、docker-gradle-pluginがあります。これを使用してJavaアプリケーションをドッキングできます。

1つのDockerビルドに複数のアプリケーションを配置することは、Dockerの使用を意図したものではありません。 Kafka、ZooKeeper、MongoDBなどのツールで利用可能なDockerイメージが既に用意されています。別のコンテナとしてそれらを使用し、それらをドッキング/非ドッキングのJavaアプリケーションにリンクするだけです。

また、DockerfileにGradleビルドツールを組み込むにはどうすればよいですか?

実際にDocker BuildをGradleビルドファイルに組み込みます。その逆ではありません。

+0

はい、それは2つのステップが必要なオプションです。 Gradleによって作成されたjarファイルに基づいてイメージを構築するDockerfileを作成できます。そして、このDockerfileで 'docker build'を呼び出すことができます。代わりに、docker-gradle-pluginを使用する場合は、両方のステップを組み合わせることができます。どのようにしてやるかはあなた次第です。 – techtabu

+0

最初にGradleにアプリケーション全体をビルドさせてJARファイルを作成させる場合はどうすればいいですか?私はその後、ちょうどDockerfileにJARファイルを追加し、次のようにそれを実行できます。 'Javaから:7' ' /javaApp/build/libs/javaApp.jar javaApp.jar' 'ENTRYPOINT [ "ジャワ" を追加し、 "-jar"、 "javaApp.jar" ' 実行可能なアプローチと思われますか? その後、私はKafka、Zookeeper、およびMongoDBのイメージをプルして実行し、それらをDockerized javaAppにリンクする必要があります。 – pcsram

+0

私が上で述べたように、それは実行可能な選択肢です。しかし、いくつかの追加ステップが必要です。しかし、訂正しても、 'ADD /javaApp/build/libs/javaApp.jar javaApp.jar'という文は必要ありません。代わりに、DockerファイルがあるディレクトリのメインディレクトリまたはサブディレクトリのいずれかでjavaAppを使用できるようにする必要があります。 Docker自体がそのjarファイルをイメージにコピーします。 Dockerはコンテキストディレクトリの外にあるファイルにアクセスできない場合があります。私は試してエラーが発生しました。そして、ええ、その後、あなたは他のイメージのためにあなたが言ったことを「引き出して実行する」だけです。 – techtabu

関連する問題