8.4.1. コンテナ用ウェブプロジェクトの初期セットアップ¶
コンテナ用ウェブプロジェクトの初期セットアップでは以下を行う。
- コンテナ用ウェブプロジェクトの生成
- コンテナ用ウェブプロジェクトの動作確認
- コンテナイメージの作成
- コンテナイメージの実行
8.4.1.1. 生成するプロジェクトの概要¶
本手順で生成するプロジェクトの概要は以下の通りである。
項目 | 説明 |
---|---|
プロジェクト種別 | Mavenプロジェクト |
プロジェクト構成 | 単一プロジェクト構成 |
使用DB | H2 Databaes Engine(アプリケーションに組み込み) |
組み込まれているアダプタ | ルーティングアダプタ(詳細は、 ルーティングアダプタ を参照) |
生成するプロジェクトに含まれるもの | 生成されたプロジェクトには以下が含まれる。
|
他のプロジェクトとの関係、及びディレクトリ構成は、 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.0
と myapp-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のデータの確認方法や、ブランクプロジェクトに組み込まれているツールに関しては、 初期セットアップ手順 補足事項 を参照すること。