DockerコンテナへのJavaWarのデプロイ
1. 概要
このチュートリアルでは、JavaWARファイルをDockerコンテナー内にデプロイする方法を学習します。
WARファイルをApacheTomcat にデプロイします。これは、Javaコミュニティで広く使用されている無料のオープンソースWebサーバーです。
2. WARファイルをTomcatにデプロイする
WAR(Webアプリケーションアーカイブ)は、すべてのWebアプリケーション関連ファイルとそのディレクトリ構造をパッケージ化したzip形式のアーカイブファイルです。
簡単にするために、TomcatにWARファイルをデプロイする は、そのWARファイルをTomcatサーバーのデプロイメントディレクトリにコピーすることに他なりません。 Linuxのデプロイメントディレクトリは$CATALINA_HOME /webappsです。 $ CATALINA_HOME は、Tomcatサーバーのインストールディレクトリを示します。
この後、Tomcatサーバーを再起動する必要があります。これにより、デプロイメントディレクトリ内にWARファイルが抽出されます。
3. DockerコンテナにWARをデプロイする
アプリケーション用のWARファイルROOT.warがあり、Tomcatサーバーにデプロイする必要があると仮定します。
目標を達成するには、最初にDockerfileを作成する必要があります。 このDockerfileには、アプリケーションの実行に必要なすべての依存関係が含まれます。
さらに、このDockerfileを使用してDockerイメージを作成した後、Dockerコンテナーを起動する手順を実行します。
これらのステップを1つずつ深く掘り下げてみましょう。
3.1. Dockerfileを作成する
Dockerfileのベースイメージとして、Tomcatの最新のDockerイメージを使用します。 このイメージを使用する利点は、必要なすべての依存関係/パッケージが事前にインストールされていることです。 たとえば、最新のUbuntu / CentOS Dockerイメージを使用する場合は、Java、Tomcat、およびその他の必要なパッケージを手動でインストールする必要があります。
必要なパッケージはすべてすでにインストールされているので、必要なのはWARファイルROOT.warをTomcatサーバーのデプロイメントディレクトリにコピーすることだけです。 それでおしまい!
よく見てみましょう:
$ ls
Dockerfile ROOT.war
$ cat Dockerfile
FROM tomcat
COPY ROOT.war /usr/local/tomcat/webapps/
$ CATALINA_HOME / webappsは、Tomcatのデプロイメントディレクトリを示します。ここで、Tomcatの公式Dockerイメージの CATALINA_HOME は、 / usr / local /tomcatです。 その結果、完全なデプロイメントディレクトリは / usr / local / tomcat /webappsになります。
ここで使用したアプリケーションは非常に単純で、他の依存関係は必要ありません。
3.2. Dockerイメージをビルドする
作成したDockerfileを使用してDockerイメージを作成しましょう。
$ pwd
/baeldung
$ ls
Dockerfile ROOT.war
$ docker build -t myapp .
Sending build context to Docker daemon 19.97kB
Step 1/2 : FROM tomcat
---> 710ec5c56683
Step 2/2 : COPY ROOT.war /usr/local/tomcat/webapps/
---> Using cache
---> 8b132ab37a0e
Successfully built 8b132ab37a0e
Successfully tagged myapp:latest
The Dockerビルドコマンドはタグ付きのDockerイメージを作成します
Dockerfileが配置されているディレクトリ内からDockerイメージをビルドするようにしてください。上記の例では、Dockerイメージをビルドするときに /baeldungディレクトリ内にあります。
3.3. DockerContainerを実行する
これまで、Dockerfileを作成し、そこからDockerイメージを構築してきました。 Dockerコンテナを実行してみましょう。
$ docker run -itd -p 8080:8080 --name my_application_container myapp
e90c61fdb4ac85b198903e4d744f7b0f3c18c9499ed6e2bbe2f39da0211d42c0
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e90c61fdb4ac myapp "catalina.sh run" 6 seconds ago Up 5 seconds 0.0.0.0:8080->8080/tcp my_application_container
このコマンドは、名前のDockerコンテナを起動します my_application_container Dockerイメージを使用する
Tomcatサーバーのデフォルトポートは8080です。したがって、Dockerコンテナを起動するときは、必ずコンテナポート8080を使用可能なホストポートにバインドしてください。 ここでは簡単にするためにホストポート8080を使用しました。
3.4. セットアップを確認する
これまでに行ったすべてのことを確認してみましょう。 URLにアクセスします http://
ここで、 IP は、DockerホストマシンのパブリックIP(または場合によってはプライベートIP)を示します。 PORT は、Dockerコンテナー(この場合は8080)の実行中に公開したコンテナーポートです。
Linuxのcurlユーティリティを使用してセットアップを確認することもできます。
$ curl http://localhost:8080
Hi from Baeldung!!!
上記のコマンドでは、Dockerホストマシンからコマンドを実行しています。 したがって、を使用してアプリケーションに接続することができます
4. 結論
この記事では、DockerコンテナーにJavaWARファイルをデプロイする方法を学びました。 まず、公式のTomcatDockerイメージを使用してDockerfileを作成しました。 次に、Dockerイメージをビルドし、アプリケーションコンテナーを実行しました。
最後に、アプリケーションのURLにアクセスしてセットアップを確認しました。