LoginSignup
0
1

More than 1 year has passed since last update.

簡単なJSPとJavaのセットを作ってDockerで動かす

Last updated at Posted at 2021-10-19

前回はTomcatのDockerイメージ(公式)にHTMLだけ追加してオリジナルのDockerイメージを作る…というのをやったので、今回はJavaも追加して動的アプリケーションを作っちゃおう~と思いました。前回作ったDockerイメージにJavaクラスを追加してindex.htmlをちょっと修正したらいけるだろう…と思っていたのですが、なんだか無理そうなのでEclipse先生とかjersey(JavaでREST APIを作るためのフレームワーク)様の力を借りたいと思います。

ざっくり手順

1)事前準備(各種ツールのダウンロード)
2)とりあえずEclipseで動くプロジェクトを作る
3)プロジェクトをWARでエクスポートしてDockerで動かす

使ったもの

Docker Desktop for Windows
Windows PowerShell
Eclipse

1)事前準備

それぞれ以下の公式サイトからダウンロード
Docker Desktop for Windows
Windows PowerShell
Eclipse ※JavaのFull Editionを入れました

2)とりあえずEclipseで動くプロジェクトを作る

①Mavenプロジェクトの作成
・Eclipseを立ち上げて「ファイル→新規→Mavenプロジェクト」をクリック
・デフォルト・ワークスペース・ロケーションの使用にチェックのまま「次へ」をクリック
・アーキタイプはgroupId=org.glassfish.jersey.archetypes/ArtifactId=jersey-quickstart-webappを選択して「次へ」をクリック
・任意のグループID、アーティファクトID、バージョン(デフォルトでOK)、パッケージを設定する
・作成されたプロジェクトを右クリックして「プロパティ」を選択→「Javaのビルドパス」を選択して実行環境をJavaSE-11に設定しておく
※バージョンがズレていると実行時にエラーでうまくいかなくなるので注意→詳細はこちら参照
これでサンプルプログラムつきのMavenプロジェクトができたので、サンプルプログラムをベースにしてJavaとJSPを作成する
②Javaクラスの作成
デフォルトでMyResource.javaが作成されているので、それを真似てWelcomeResource.javaを作成

welcomeresource.java
package ukaf.simple2;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;

@Path("welcome")
public class WelcomeResource {
       @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String getMsg(@QueryParam("name") String name) {
           System.out.println(name);
            return "Welcome " + name + " !!";
        }
}

③index.jspの作成
デフォルトのindex.jspに少し追記(5行目)

index.jsp
<html>
<body>
    <h2>Jersey1 RESTful Web Application!</h2>
    <p><a href="webapi/myresource">Jersey resource</a>
    <p><a href="webapi/welcome?name=YOURNAME">Go to welcome-page</a>
    <p>Visit <a href="http://jersey.java.net">Project Jersey website</a>
    for more information on Jersey!
</body>
</html>

④ビルド~テスト
・プロジェクトを右クリックして「実行→Mavenビルド」を選択
・コンソールタブにBUILD SUCCESSが表示されたことを確認したら、サーバタブを選択
・Tomcat10_java16を右クリックして「開始」を選択
・起動後、以下のURLにアクセスをする
http://localhost:8080/simple2
image.png
→Jersey resourceをクリックするとデフォルト作成されていたリソース(/myresource)を呼び出す
→Go to welcome-pageをクリックすると自作したリソース(/welcomeresource)を呼び出す

http://localhost:8080/simple2/webapi/myresource
画面に「Got it!」と表示される
http://localhost:8080/simple2/webapi/welcome?name=YOURNAME
画面に「Welcome YOURNAME !!」と表示される

3)プロジェクトをWARでエクスポートしてDockerで動かす

①WARを作成
・Eclipse上でプロジェクトを右クリックして「エクスポート」を選択
・「WARファイル」を選択
・任意の保存先を指定して「完了」をクリック
②Dockerfileを作成
・WARの保存先と同じ場所にDockerfileを新規作成(拡張子はなし)
・以下のように記述

FROM tomcat:latest

COPY simple2.war $CATALINA_HOME/webapps/
WORKDIR $CATALINA_HOME
$CATALINA_HOMEは/usr/local/tomcat

CMD ["catalina.sh","run"]

③ビルド~テスト
Windows PoweShellでDockerfileとWARの保存先まで移動して、以下を実行
docker build . -t welcome:1.0
docker run -it --rm -p 8880:8080 welcome:1.0
完了後、以下のURLにアクセス、2)④と同じ結果を得られることを確認
http://localhost:8880/simple2/
http://localhost:8880/simple2/webapi/myresource
http://localhost:8880/simple2/webapi/welcome?name=YOURNAME

以上です!

参考

Mavenプロジェクト作成
https://qiita.com/kamegu3/items/e492dacdb71a3f3a8c94
DockerでWARファイルを実行
https://qiita.com/tatematsu-k/items/2bdd2808a66f5cbd16ca

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1