8.4.1. コンテナ用ウェブプロジェクトの初期セットアップ

コンテナ用ウェブプロジェクトの初期セットアップでは以下を行う。

  • コンテナ用ウェブプロジェクトの生成
  • コンテナ用ウェブプロジェクトの動作確認
  • コンテナイメージの作成
  • コンテナイメージの実行

8.4.1.1. 生成するプロジェクトの概要

本手順で生成するプロジェクトの概要は以下の通りである。

項目 説明
プロジェクト種別 Mavenプロジェクト
プロジェクト構成 単一プロジェクト構成
使用DB H2 Databaes Engine(アプリケーションに組み込み)
組み込まれているアダプタ ルーティングアダプタ(詳細は、 ルーティングアダプタ を参照)
生成するプロジェクトに含まれるもの

生成されたプロジェクトには以下が含まれる。

  • Nablarchのウェブアプリケーション用の基本的な設定
  • 疎通確認用ウェブアプリケーション
  • Mavenと連動して動作するツールの初期設定( nablarch-archetype-parent(親プロジェクト) を参照することによって取り込んでいる)。

他のプロジェクトとの関係、及びディレクトリ構成は、 Mavenアーキタイプの構成 を参照。

8.4.1.2. ブランクプロジェクト作成

Nablarchが提供するアーキタイプを使用してブランクプロジェクトを生成する。

8.4.1.2.1. mvnコマンドの実行

Maven Archetype Plugin(外部サイト、英語) を使用して、ブランクプロジェクトを生成する。

カレントディレクトリを、ブランクプロジェクトを作成したいディレクトリ(任意のディレクトリで可)に変更し、以下のファイルを配置する。

バッチファイル

配置後、引数に必要なパラメータを指定しbatファイルを実行する。

generateContainerWebProject.bat 5u20 <<groupId>> <<artifactId>> <<version>> <<package(任意)>>

上記コマンドに設定するパラメータは以下の通り。 なお、nablarchのバージョンを変更したい場合には 5u20 を変更すること。

入力項目 説明 設定例
groupId グループID(通常はパッケージ名を入力) com.example
artifactId アーティファクトID myapp-container-web
version バージョン番号 0.1.0
package パッケージ(通常はグループIDと同じ) com.example

重要

項目groupIdおよびpackageは、Javaのパッケージ名にマッピングされる。 よって、これらの入力値には、英小文字、数字、ドットを使用し、ハイフンは使用しないこと。

コマンドが正常終了した場合、ブランクプロジェクトがカレントディレクトリ配下に作成される。

8.4.1.3. 疎通確認

疎通確認の仕組みや手順は通常のウェブプロジェクトと同じなので、 ウェブプロジェクトの初期セットアップ手順 を参照。

注釈

アーティファクトID が myapp-container-web になっている点は、適宜読み替えてディレクトリやコマンドを指定すること。

8.4.1.4. コンテナイメージを作成する

ブランクプロジェクトには、Dockerコンテナのイメージを作成するために Jib (外部サイト、英語)というプラグインがあらかじめ組み込まれている。

このプラグインの jib:dockerBuild ゴールを実行することで、コンテナイメージを作成できる。

cd myapp-container-web
mvn package jib:dockerBuild

実行に成功すると、以下のようなログがコンソールに出力される。

(中略)
[INFO] Built image to Docker daemon as myapp-container-web, myapp-container-web, myapp-container-web:0.1.0
[INFO] Executing tasks:
[INFO] [==============================] 100.0% complete
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
(以下略)

ビルドされたDockerイメージは、ローカルリポジトリに保存される。 以下のコマンドで、ローカルリポジトリに保存されたイメージを確認できる。

docker image ls
REPOSITORY              TAG         IMAGE ID       CREATED        SIZE
myapp-container-web     0.1.0       dd60cbdc7722   50 years ago   449MB
myapp-container-web     latest      dd60cbdc7722   50 years ago   449MB

myapp-container-web:0.1.0myapp-container-web:latest という2つのイメージが登録されていることが分かる。

このように、ブランクプロジェクトでは jib:dockerBuild を実行すると次の2つのイメージが作成されるように設定されている。

  • ${project.artifactId}:latest
  • ${project.artifactId}:${project.version}

また、初期設定ではベースイメージとして Tomcat のイメージ (外部サイト、英語)が使用される。

ベースイメージは jib.from.image プロパティで変更することができる。 例えば、ベースイメージに tomcat:9.0.31-jdk11-adoptopenjdk-hotspot を使用したい場合は、次のように pom.xml に記述する。

<project>
  <!--省略...-->
  <properties>
    <!--省略...-->
    <jib.from.image>tomcat:9.0.36-jdk11-adoptopenjdk-hotspot</jib.from.image>
    <!--省略...-->
  </properties>
  <!--省略...-->
</project>

補足

ブランクプロジェクトではイメージをタグで指定しているが、この場合、指定したイメージの最新バージョンが選択される。 検証時と異なるバージョンが選択された場合、アプリケーションの動作に影響が出る可能性があるので、 プロジェクトにおける検証が完了した段階で、バージョンを固定するために、イメージをダイジェストで指定することを推奨する。

ダイジェストによる設定例を以下に示す。

<jib.from.image>tomcat@sha256:7d59567f61e79f5dc1226a3ee26b4a4c2befc5cae182f7e0823199cf5885409b</jib.from.image>

8.4.1.5. コンテナイメージを実行する

作成したコンテナイメージは、次のコマンドで実行できる。

cd myapp-container-web
docker run -d -p 8080:8080 -v %CD%\h2:/usr/local/tomcat/h2 --name myapp-container-web myapp-container-web

コンテナが起動したら、ウェブブラウザで http://localhost:8080/ にアクセスすることで、アプリケーションの動作を確認できる。

補足

上記コマンドは、データベースとしてブランクプロジェクトにあらかじめ組み込んでいるSAMPLE.h2.dbを使用する場合の例となっている。 SAMPLE.h2.dbを使用しない場合は、ボリュームの指定(-v)は不要になる。

補足

Dockerの実行は、Docker Desktopを使用していることを 前提 としている。 Docker Toolboxを使用している場合は、上記例のボリューム指定ではエラーになる。

Docker Toolboxを使用している場合、DockerはVirtualBox上のVMで動いている。 このため、ボリュームのホスト側に指定できるパスは、VM上のパスになる。

Windowsの場合、デフォルトでは C:\Users がVM上の /c/users にマウントされている。 したがって、Docker Toolboxを使用している場合は、ボリュームの指定を -v /c/users/path/to/project/h2:/usr/local/tomcat/h2 のようにしなければならない。

コンテナを終了するには、次のコマンドを実行する。

docker stop myapp-container-web

また、コンテナを削除するには、次のコマンドを実行する。

docker rm myapp-container-web

8.4.1.6. 補足

H2のデータの確認方法や、ブランクプロジェクトに組み込まれているツールに関しては、 初期セットアップ手順 補足事項 を参照すること。