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イメージを作成します myapp。 

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イメージを使用する myapp。 

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ホストマシンからコマンドを実行しています。 したがって、を使用してアプリケーションに接続することができますローカルホスト。 それに応じて、 カールユーティリティは、アプリケーションWebページの生のHTMLを出力します。

4. 結論

この記事では、DockerコンテナーにJavaWARファイルをデプロイする方法を学びました。 まず、公式のTomcatDockerイメージを使用してDockerfileを作成しました。 次に、Dockerイメージをビルドし、アプリケーションコンテナーを実行しました。

最後に、アプリケーションのURLにアクセスしてセットアップを確認しました。