Docker と Tomcat を組み合わせる

Docker To Tomcat Wo Zumi Hewaseru



Apache Tomcat は、Apache Software Foundation (ASF) によって開発されたオープンソースの Web サーバーおよびサーブレット コンテナです。

Tomcat は、Oracle の Java Servlet および JavaServer Pages 仕様を実装し、Java コードを実行するための純粋な Java HTTP Web サーバー環境を提供します。







このチュートリアルでは、Docker と Tomcat を組み合わせて、Tomcat をコンテナとして使用して Tomcat の「hello world」アプリケーションをデプロイする方法を学びます。



要件:

このチュートリアルで提供される手順とコードを正しく実行して使用するには、次のものが揃っていることを確認してください。



    1. ホスト マシンに Docker エンジンがインストールされている
    2. Java コードをテストするためにマシンに Java JDK をインストールします (オプション)
    3. ソースコードとDocker構成を編集するためのテキストエディタ

所定の要件が満たされたら、次に進み、Docker を使用して Tomcat アプリをデプロイする方法を学習します。





Docker で Tomcat イメージをプルする

幸いなことに、Tomcat アプリケーションを実行するためのすべてのツールを含む基本イメージを構成する必要はありません。 Docker Hub から Tomcat イメージを使用するだけです。

イメージをプルするには、次のようにコマンドを実行します。



$ docker pull tomcat


Hello World アプリケーションを作成する

次のステップは、「Hello World」アプリケーションを作成することです。まず、ソース コードを保存するディレクトリを作成し、そのディレクトリに移動します。

$ mkdir こんにちは世界 && CD こんにちは世界


ルート ディレクトリ内に webapp フォルダーを作成し、その中に WEB-INF フォルダーを作成します。

ディレクトリ構造は次のようになります。

こんにちは世界 /
└── ウェブアプリ
━── WEB-INF

3 ディレクトリ、 0 ファイル


次に、WEB-INF ディレクトリに移動し、次のコードを含む「web.xml」ファイルを作成します。

< ?xml バージョン = 「1.0」 エンコーディング = 「UTF-8」 ? >
< ウェブアプリ xmlns = 'http://xmlns.jcp.org/xml/ns/javaee'
xmlns: xsi = 'http://www.w3.org/2001/XMLSchema-instance'
xsi: スキーマの場所 = 'http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd'
バージョン = 「4.0」 >
< サーブレット >
< サーブレット名 > こんにちは世界 サーブレット名 >
< サーブレットクラス > HelloWorldサーブレット サーブレットクラス >
サーブレット >
< サーブレットマッピング >
< サーブレット名 > こんにちは世界 サーブレット名 >
< URLパターン >/ こんにちは URLパターン >
サーブレットマッピング >
ウェブアプリ >


ファイルを保存してエディタを閉じます。

ターミナル ウィンドウに戻り、WEB-INF/classes ディレクトリ内に「HelloWorldServlet.java」を作成します。

$ mkdir クラス
$ 触る HelloWorldServlet.java


以下に示すように、アプリケーションのコンテンツを追加します。

javax.servletをインポートします。 * ;
javax.servlet.httpをインポートします。 * ;
java.ioをインポートします。 * ;

パブリック クラス HelloWorldServlet は HttpServlet を拡張します {
public void doGet ( HttpServletRequest リクエスト、HttpServletResponse レスポンス )
ServletException、IOExceptionをスローします {
応答.setContentType ( 「テキスト/html」 ) ;
PrintWriter 出力 = response.getWriter ( ) ;
out.println ( 「」 ) ;
out.println ( 'Hello World サーブレット' ) ;
out.println ( 「<本体>」 ) ;
out.println (

ハロー、ワールド!

) ;
out.println ( ) ;
}
}


これにより、「Hello world」を出力する基本的な Tomcat サーブレットが設定されます。



Dockerfileを定義する

次のステップは、Dockerfile を定義して、「Hello World」アプリを含むカスタム イメージを構築することです。

ルート ディレクトリ内に、「Dockerfile」という名前の新しいファイルを作成します。







$ 触る / こんにちは世界 / Dockerfile


ファイルを編集し、次のように構成を追加します。



# Tomcat のベースイメージを設定する
tomcat から:最新

# Hello World アプリケーションを Tomcat webapps ディレクトリにコピーします
コピー 。 / ウェブアプリ / ユーザー / 地元 / トムキャット / ウェブアプリ / マイアプリ
# Tomcat 用にポート 8080 を公開する
さらす 8080


ディレクトリのレイアウトは次のようになります。



こんにちは世界
§── Dockerfile
└── ウェブアプリ
━── WEB-INF
§── クラス
│ └─ HelloWorldServlet.java
└── web.xml

4 ディレクトリ、 3 ファイル





イメージを構築する

次に、次のコマンドに示すようにカスタム Tomcat イメージを構築します。

$ ドッカービルド -t Tomcat アプリ 。




コンテナを実行する

イメージの準備ができたら、次のコマンドを使用してイメージからコンテナを実行できます。

$ ドッカーラン -d -p 8080 : 8080 - 名前 tomcat-コンテナ tomcat-app


これにより、前の手順で作成した tomcat-app イメージから Tomcat コンテナが構築され、ホスト マシンのポート 8080 にバインドされます。

アプリケーションにアクセスする

Web ブラウザを開いて、次の場所に移動します。 。 「Hello, World!」が表示されるはずです。ブラウザに表示されるメッセージ。

結論

おめでとう! Docker 化された Tomcat コンテナに「Hello World」アプリケーションを正常にデプロイしました。