Spring Boot + npm + Geb で入力フォームを作ってテストする ( その93 )( WebDriver を最新バージョンに上げる )
概要
記事一覧はこちらです。
何回かに分けて boot-npm-geb-sample プロジェクトのモジュールやツールを 2021/10 時点の最新バージョンにします。IntelliJ IDEA は 2021.2.2、JDK は Eclipse Temurin 11.0.12+7 を使用します。
- 今回の手順で確認できるのは以下の内容です。
参照したサイト・書籍
目次
手順
WebDriver のバージョンを最新にする
動作確認をする前に Chrome と Firefox のWebDriver を最新バージョンにします。Chrome の WebDriver は https://chromedriver.chromium.org/ を見ると Latest stable release は 94.0.4606.61、Firefox の WebDriver は https://github.com/mozilla/geckodriver/releases を見ると 0.30.0 でした。
build.gradle の以下の点を変更します。
webdriverBinaries { chromedriver "94.0.4606.61" geckodriver "0.30.0" }
chromedriver "81.0.4044.69"
→chromedriver "94.0.4606.61"
に変更します。geckodriver "0.26.0"
→geckodriver "0.30.0"
に変更します。
変更後、Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
また chromedriver、geckodriver の exe もダウンロードして D:\chromedriver\94.0.4606.61
、D:\geckodriver\0.30.0
の下に配置した後、src/test/resources/GebConfig.groovy の以下の点を変更します。
//System.setProperty("webdriver.gecko.driver", "D:/geckodriver/0.30.0/geckodriver.bat") //System.setProperty("webdriver.chrome.driver", "D:/chromedriver/94.0.4606.61/chromedriver.exe") driver = { ..........
D:/geckodriver/0.26.0/geckodriver.bat
→D:/geckodriver/0.30.0/geckodriver.bat
に変更します。D:/chromedriver/81.0.4044.69/chromedriver.exe
→D:/chromedriver/94.0.4606.61/chromedriver.exe
に変更します。
build タスクと gebTest タスク、及び IDEA から Geb のテストを実行した時の動作確認する
clean タスク実行 → Rebuild Project 実行 → build タスク実行を行うと compileTestGroovy タスクで警告のメッセージが出ますが、BUILD SUCCESSFUL のメッセージが表示されます。Spring Boot + npm + Geb で入力フォームを作ってテストする ( その83 )( Checkstyle を 8.11 → 8.19 へ、PMD を 6.6.0 → 6.13.0 へバージョンアップ+JUnit 5 の導入+ Oracle JDK 8u202 → AdoptOpenJDK 11.0.2+9 へ、error-prone を 2.3.1 → 2.3.3 へバージョンアップする) と同じ状況ですので、これは OK。
Web アプリを起動してから gebTest タスクを実行してみると、こちらも BUILD SUCCESSFUL のメッセージが表示されました。
次は IDEA から Geb のテストを実行してみます。src/test/resources/GebConfig.groovy の上に記述している WebDriver のパスの設定のコメントを解除してから、
System.setProperty("webdriver.gecko.driver", "D:/geckodriver/0.30.0/geckodriver.bat") System.setProperty("webdriver.chrome.driver", "D:/chromedriver/94.0.4606.61/chromedriver.exe") driver = { ChromeOptions chromeOptions = new ChromeOptions() new ChromeDriver(chromeOptions) // FirefoxOptions firefoxOptions = new FirefoxOptions() // new FirefoxDriver(firefoxOptions) }
src/test/groovy/geb/gebspec/inquiry/InquiryTestSpec.groovy を開いてテストを実行します。
Chrome はすべてのテストが成功しました。
Firefox に切り替えてテストを実行すると、
System.setProperty("webdriver.gecko.driver", "D:/geckodriver/0.30.0/geckodriver.bat") System.setProperty("webdriver.chrome.driver", "D:/chromedriver/94.0.4606.61/chromedriver.exe") driver = { // ChromeOptions chromeOptions = new ChromeOptions() // new ChromeDriver(chromeOptions) FirefoxOptions firefoxOptions = new FirefoxOptions() new FirefoxDriver(firefoxOptions) }
こちらもすべてのテストが成功しました。
履歴
2021/09/29
初版発行。
Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その14 )( google_checks.xml に Record に関する定義を反映する+bootBuildImage タスクで Java 17 ベースの Docker Image を作成して動作確認する )
概要
記事一覧はこちらです。
- 今回の手順で確認できるのは以下の内容です。
- Java 17 にバージョンアップしたので、checkstyle の定義ファイル google_checks.xml にエラーが出るので未反映だった Record に関する定義を反映します。
- bootBuildImage タスクを実行して Java 17 ベースの docker.io/library/ksbysample-webapp-lending:2.5.5 の Docker Image を作成して動作確認します。
参照したサイト・書籍
checkstyle/checkstyle - checkstyle/src/main/resources/google_checks.xml
https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml"network default: network.external.name is deprecated in favor of network.name"
https://github.com/docker/compose-cli/issues/1856
目次
手順
google_checks.xml に Record に関する定義を反映する
google_checks.xml から Record に関する定義を反映します。今回反映した内容を箇条書きで記述しておきます。
- RECORD_DEF、RECORD_COMPONENT_DEF の記述が未反映の箇所に反映しました。
<module name="RecordComponentName">.....</module>
を追加しました。<module name="RecordTypeParameterName">.....</module>
を追加しました。
clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると checkstyleMain タスクで何もログは出力されず、"BUILD SUCCESSFUL" のメッセージが出力されました。
bootBuildImage タスクで Java 17 ベースの Docker Image を生成し動作確認する
bootBuildImage タスクを実行して ksbysample-webapp-lending:2.5.5 の Docker Image を生成します。
https://github.com/bell-sw/Liberica/releases/download/17+35/bellsoft-jre17+35-linux-amd64.tar.gz がダウンロードされて BUILD SUCCESSFUL のメッセージが出力されました。bootBuildImage タスクも Java 17 対応されているようです。
..........
docker-compose.app.yml を以下のように変更します。
app: image: ksbysample-webapp-lending:2.5.5 environment: - JAVA_TOOL_OPTIONS=-Dspring.profiles.active=product -Dlogging.appender=CONSOLE - SPRING_DATASOURCE_HIKARI_JDBC_URL=jdbc:postgresql://postgresql/ksbylending - SPRING_MAIL_HOST=mail-server - SPRING_RABBITMQ_HOST=haproxy deploy: mode: replicated replicas: 3 # entrypoint: /bin/bash # stdin_open: true # tty: true
image: ksbysample-webapp-lending:2.5.4
→image: ksbysample-webapp-lending:2.5.5
に変更します。
docker-compose -f docker-compose.mail.yml up -d
コマンドを実行します。。。が、network default: network.external.name is deprecated in favor of network.name
というメッセージが出力されていることに気づきました。
調べてみると https://github.com/docker/compose-cli/issues/1856 のことで、Docker Compose V2 から記述の仕方が変更になるようです。docker-compose -f docker-compose.mail.yml down
を実行した後、docker-compose.mail.yml、docker-compose.app.yml の networks の記述を以下のように変更します。
networks: default: name: ksbysample-webapp-lending_default external: true
- networks.default.external.name → networks.default.name に変更し、name と同じ階層に
external: true
を追加します。
docker-compose -f docker-compose.mail.yml up -d
、docker-compose -f docker-compose.app.yml up -d
コマンドを実行します。
http://localhost:8080/haproxy?stats にアクセスして全てのインスタンスが緑色になるまで待ちます。
Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その11 )( Docker で複数の Tomcat を起動して動作確認する ) に書いてある手順で動作確認します(画面キャプチャは省略します)。
動作確認は特に問題ありませんでした。
docker-compose -f docker-compose.app.yml down
、docker-compose -f docker-compose.mail.yml down
、docker-compose down
コマンドを実行してコンテナを停止します。
履歴
2021/09/29
初版発行。
Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その13 )( Spring Boot を 2.5.4 → 2.5.5 へ、Eclipse Adoptium OpenJDK(Eclipse Temurin) を 11.0.12+7 → 17+35 へバージョンアップする )
概要
記事一覧はこちらです。
- 今回の手順で確認できるのは以下の内容です。
参照したサイト・書籍
目次
- Spring Boot を 2.5.4 → 2.5.5 へバージョンアップする
- Eclipse Adoptium OpenJDK(Eclipse Temurin) を 11.0.12+7 → 17+35 へバージョンアップする
- build タスク時に pmdMain タスクと test タスクで出力された警告を確認する
手順
Spring Boot を 2.5.4 → 2.5.5 へバージョンアップする
build.gradle の以下の点を変更します。
buildscript { ext { group "ksbysample" version "2.5.5" } repositories { mavenCentral() maven { url "https://repo.spring.io/release/" } gradlePluginPortal() } dependencies { // for doma-codegen-plugin classpath "org.postgresql:postgresql:42.2.24" } } plugins { id "java" id "eclipse" id "idea" id "org.springframework.boot" version "2.5.5" id "io.spring.dependency-management" version "1.0.11.RELEASE" id "groovy" id "checkstyle" id "com.github.spotbugs" version "4.7.3" id "pmd" id "net.ltgt.errorprone" version "2.0.2" id "com.gorylenko.gradle-git-properties" version "2.3.1" id "org.seasar.doma.codegen" version "1.4.1" } .......... dependencyManagement { imports { // bomProperty に指定可能な property は以下の URL の BOM に記述がある // https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.5.4/spring-boot-dependencies-2.5.4.pom mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES) { // Spring Boot の BOM に定義されているバージョンから変更する場合には、ここに以下のように記述する // bomProperty "thymeleaf.version", "3.0.9.RELEASE" } mavenBom("org.junit:junit-bom:5.8.1") } } dependencies { def spockVersion = "2.0-groovy-3.0" def jdbcDriver = "org.postgresql:postgresql:42.2.24" def domaVersion = "2.49.0" def lombokVersion = "1.18.20" def errorproneVersion = "2.9.0" ..........
Spring Boot 2.5.5 へのバージョンアップとして以下の点を変更します。
- buildscript block の以下の点を変更します。
version "2.5.4"
→version "2.5.5"
- plugins block の以下の点を変更します。
id "org.springframework.boot" version "2.5.4"
→id "org.springframework.boot" version "2.5.5"
各種ライブラリのバージョンアップとして以下の点を変更します。
- buildscript block の以下の点を変更します。
classpath "org.postgresql:postgresql:42.2.23"
→classpath "org.postgresql:postgresql:42.2.24"
- dependencyManagement block の以下の点を変更します。
mavenBom("org.junit:junit-bom:5.7.2")
→mavenBom("org.junit:junit-bom:5.8.1")
- dependencies block の以下の点を変更します。
def jdbcDriver = "org.postgresql:postgresql:42.2.23"
→def jdbcDriver = "org.postgresql:postgresql:42.2.24"
def domaVersion = "2.47.1"
→def domaVersion = "2.49.0"
Gradle Tool Window の左上にある「Reload All Gradle Projects」ボタンをクリックして更新します。
clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると "BUILD SUCCESSFUL" のメッセージが出力されました。
Eclipse Adoptium OpenJDK(Eclipse Temurin) を 11.0.12+7 → 17+35 へバージョンアップする
IntelliJ IDEA を終了させます。
https://adoptium.net/index.html から OpenJDK17-jdk_x64_windows_hotspot_17_35.msi をダウンロードします。
インストール時に削除されるかもしれないので D:\Java\jdk-11.0.12.7-hotspot → D:\Java\jdk-11.0.12.7-hotspotx にリネームします。
インストーラーを実行して D:\java\jdk-17.0.0.35-hotspot へインストールした後、環境変数 JAVA_HOME のパスを D:\java\jdk-17.0.0.35-hotspot へ変更します。
コマンドプロンプトから
java -version
を実行し、17+35
に変更されていることを確認します。D:\Java\jdk-11.0.12.7-hotspotx → D:\Java\jdk-11.0.12.7-hotspot に戻します。
IntelliJ IDEA を起動します。
「Welcome to IntelliJ IDEA」ダイアログで ksbysample-webapp-lending プロジェクトを開いて、プロジェクトが使用する JDK を 11.0.12+7 に変更します。
IntelliJ IDEA のメイン画面が開いたら、メニューから「File」-「Project Structure...」を選択します。
「Project Structure」ダイアログが表示されます。「Project SDK」で D:\Java\jdk-17.0.0.35-hotspot を選択します(なぜか2行表示されています)。
「Experimental Feature Alert」のダイアログが表示されるので「Accept」ボタンをクリックします。
「Project SDK」の「Edit」ボタンをクリックします。
「Project Structure」ダイアログが表示されます。画面左側で「Platform Settings」-「SDKs」を選択して、中央のリストから「11.0.12.7」を選択した後、リストの上の「-」ボタンをクリックして削除します。
中央のリストから「17」を選択した後、"17" → "17+35" へ変更します。
「OK」ボタンをクリックして「Project Structure for New Projects」ダイアログを閉じます。
メイン画面に戻ると画面右下に「Indexing...」の表示が出るので、終了するまで待ちます。
build.gradle の sourceCompatibility、targetCompatibility の設定を JavaVersion.VERSION_17 に変更します。
sourceCompatibility = JavaVersion.VERSION_11
→sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_11
→targetCompatibility = JavaVersion.VERSION_17
Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると "BUILD SUCCESSFUL" のメッセージが出力されますが、pmdMain タスクと test タスクで警告が出力されました。
pmdMain タスクで出力された警告は以下のものでした。
- WARNING: A terminally deprecated method in java.lang.System has been called
- WARNING: System::setSecurityManager has been called by edu.umd.cs.findbugs.ba.jsr305.TypeQualifierValue (file:/C:/Users/root/.gradle/caches/modules-2/files-2.1/com.github.spotbugs/spotbugs/4.4.0/83d0d8856de551bb4aa2f4b815a61b606c93acf/spotbugs-4.4.0.jar)
- WARNING: Please consider reporting this to the maintainers of edu.umd.cs.findbugs.ba.jsr305.TypeQualifierValue
- WARNING: System::setSecurityManager will be removed in a future release
test タスクで出力された警告は以下のものでした。
- OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
調査は後回しにして先に進めます。
Project Tool Window で src/test でコンテキストメニューを表示して「More Run/Debug」-「Run 'All Tests' with Coverage」を選択し、テストが全て成功することを確認します。
build タスク時に pmdMain タスクと test タスクで出力された警告を確認する
WARNING: System::setSecurityManager will be removed in a future release
pmdMain タスクで出力された警告ですが、将来 Security Manager を廃止するために非推奨になっているためでした(https://openjdk.java.net/jeps/411 参照)。 ログを見ると spotbugs-4.4.0.jar で System::setSecurityManager が呼び出されているので PMD ではなく SpotBugs が原因でした。
SpotBugs は 4.4.1 がリリースされていたのでバージョンアップしてみましたが、警告が出力される状況は解消されなかったので、現時点では 4.4 のままとし SpotBugs の対応を待つことにします。
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
以下の URL にこの警告に関する記述があり、
- How to avoid "Sharing is only supported for boot loader classes because bootstrap classpath has been appended" warning during debug with Java 11?
https://stackoverflow.com/questions/54205486/how-to-avoid-sharing-is-only-supported-for-boot-loader-classes-because-bootstra - Improve Launch Times On Java 13 With Application Class-Data Sharing https://nipafx.dev/java-application-class-data-sharing/
test タスク実行時の jvmArgs に -Xshare:off
オプションを追加すれば警告が出力されないようにはできますが、気にするような警告ではないようなので、今は出力されたままにすることにします。
Java 17 は特にエラーも出ずに切り替えることができました。
ただし Lombok は現在使用している 1.18.20 ではまだ PLATFORM: JDK16 support added.
止まりで正式に Java 17 対応を表明してはいないので(https://projectlombok.org/changelog 参照)、Lombok を使うなら Java 17 の利用は Lombok の正式対応を待った方が良さそうです。
Gradle もまだ Java 17 には正式に対応していませんでした(https://github.com/gradle/gradle/issues/16857 参照)。7.3 で対応するそうです。
履歴
2021/09/26
初版発行。
IntelliJ IDEA を 2021.2.1 → 2021.2.2 へバージョンアップ
IntelliJ IDEA を 2021.2.1 → 2021.2.2 へバージョンアップする
IntelliJ IDEA の 2021.2.2 がリリースされているのでバージョンアップします。
- IntelliJ IDEA 2021.2.2 Is Available
https://blog.jetbrains.com/idea/2021/09/intellij-idea-2021-2-2/
※ksbysample-webapp-lending プロジェクトを開いた状態でバージョンアップしています。
IntelliJ IDEA のメインメニューから「Help」-「Check for Updates...」を選択します。
「IntelliJ IDEA and Plugin Updates」ダイアログが表示されます。右下に「Update and Restart」ボタンが表示されていますので、「Update and Restart」ボタンをクリックします。
Plugin の update も表示されました。このまま「Update」ボタンをクリックします。
Patch がダウンロードされて IntelliJ IDEA が再起動します。
IntelliJ IDEA が起動すると画面下部に「Indexing」のメッセージが表示されますので、終了するまで待機します。
IntelliJ IDEA のメインメニューから「Help」-「About」を選択し、2021.2.2 へバージョンアップされていることを確認します。
clean タスク実行 → Rebuild Project 実行 → build タスクを実行して、"BUILD SUCCESSFUL" のメッセージが出力されることを確認します。
Project Tool Window で src/test でコンテキストメニューを表示して「More Run/Debug」-「Run 'All Tests' with Coverage」を選択し、テストが全て成功することを確認します。
Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その12 )( build.gradle から --add-opens=.....=ALL-UNNAMED の記述を削除する )
概要
記事一覧はこちらです。
Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その11 )( Docker で複数の Tomcat を起動して動作確認する ) の続きです。
- 今回の手順で確認できるのは以下の内容です。
- build.gradle に不要になった
-add-opens=.....=ALL-UNNAMED
の記述が残っていたので削除します。
- build.gradle に不要になった
参照したサイト・書籍
目次
手順
build.gradle を変更する
build.gradle を見直していたところ、以下の記述が残っていることに気づきました。今回のバージョンアップで groovy が 3系になって powermock も依存関係から削除しており、このオプションは不要になっているはずなので削除します。
// JDK 11 に変更後、test タスク実行時に groovy と powermock が JDKの内部部分にアクセスするためにコードでリフレクションを使用 // していて WARNING が出るため、JVM の起動時オプションの --add-opens を指定して WARNING が出ないようにする def jvmArgsAddOpens = [ "--add-opens=java.base/java.io=ALL-UNNAMED", "--add-opens=java.base/java.lang=ALL-UNNAMED", "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED", "--add-opens=java.base/java.lang.ref=ALL-UNNAMED", "--add-opens=java.base/java.lang.reflect=ALL-UNNAMED", "--add-opens=java.base/java.net=ALL-UNNAMED", "--add-opens=java.base/java.security=ALL-UNNAMED", "--add-opens=java.base/java.util=ALL-UNNAMED" ]
build.gradle の以下の点を変更します。
test { jvmArgs = jvmArgsForTask + ["-Dspring.profiles.active=unittest"] // for JUnit 5 useJUnitPlatform() testLogging { afterSuite printTestCount } }
def jvmArgsAddOpens = [ "--add-opens=java.base/java.io=ALL-UNNAMED", ... ]
の記述を削除します。- test タスクの jvmArgs の記述から
jvmArgsAddOpens +
を削除します。
clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると "BUILD SUCCESSFUL" のメッセージが出力されました。
履歴
2021/09/26
初版発行。
Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( 感想 )
記事一覧はこちらです。
Spring Boot 2.5 Release Notes には結構記述がありますが、アプリに直接影響が出る変更がなく今回もバージョンアップするだけで終わりました。
Gradle 7.x、Spock 2.x、Groovy 3.x へのバージョンアップは少し時間がかかるかもしれないと思っていましたが、ほとんど問題は発生しませんでした。
今回のバージョンアップには関係ありませんが、今年の 9/1~9/3 に開催された Spring One で 2022年4Q にリリース予定の Spring Framework 6 + Spring Boot 3 から Jakarta EE 9 がベースラインになるとのアナウンスがありました(
javax.*
→jakarta.*
パッケージへ切り替えるのも Spring Boot 3 からになる模様)。IntelliJ IDEA は 2021年7月にリリースされた 2021.2 でjavax.*
→jakarta.*
パッケージへの移行を支援する「Automatic migration from Java EE to Jakarta EE」の機能がリリースされました。「Run」ボタンをクリックすると
javax.*
パッケージが使用されている箇所を洗い出してくれます。Spring Boot 3 にバージョンアップする時にこの機能を使うと思いますが、1年以上前にリリースされた機能を覚えていられるのかな。。。
javax.*
→jakarta.*
パッケージへの切替については Support for Jakarta EE 9 (annotations and interfaces in jakarta.* namespace) で議論されていますので、しばらくの間は要チェックでしょう。また、Unable to upgrade to latest Tomcat - Spring framework and RestEasy don't support Tomcat 10 や http://tomcat.apache.org/migration-10.html を見ると Tomcat 10 にバージョンアップするには jakarta.* パッケージへの変更が必須のようです。Embedded Tomcat ならば Spring Boot 3 になるまでは Tomcat 10 は使用されず問題にならないかもしれませんが、Tomcat 10 のサーバを別途構築して war ファイルを作成して deploy しなければならない場合には Spring Boot 3 になるまで deploy できないことに気づかないかもしれません。後者の環境で deploy したことがないので本当にそうなのかは分かりませんが、
jakarta.*
パッケージの利用有無は1年くらいは要注意でしょう。
Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その11 )( Docker で複数の Tomcat を起動して動作確認する )
概要
記事一覧はこちらです。
Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その10 )( Docker コンテナの image をバージョンアップする ) の続きです。
- 今回の手順で確認できるのは以下の内容です。
- Build OCI images with Cloud Native Buildpacks の機能で作成した Docker image で Web アプリを実行して動作確認します。
参照したサイト・書籍
目次
- clean タスク実行 → Rebuild Project 実行 → build タスクを実行する
- bootBuildImage タスクを実行する
- docker-compose.app.yml を変更する
- Docker で複数の Tomcat を起動して動作確認する
- Docker Compose V2 では
--compatibility
オプションが無くなったのか。。。と思ったが、docker-compose -f docker-compose.app.yml up -d
で app コンテナが3つ起動する
手順
clean タスク実行 → Rebuild Project 実行 → build タスクを実行する
clean タスク実行 → Rebuild Project 実行 → build タスクを実行して BUILD SUCCESSFUL のメッセージが出力されることを確認します。
bootBuildImage タスクを実行する
bootBuildImage タスクを実行して Successfully built image 'docker.io/library/ksbysample-webapp-lending:2.5.4'
と BUILD SUCCESSFUL
のメッセージが出力されることを確認します。
docker-compose.app.yml を変更する
docker-compose.app.yml を以下のように変更します。
app: image: ksbysample-webapp-lending:2.5.4 environment: - JAVA_TOOL_OPTIONS=-Dspring.profiles.active=product -Dlogging.appender=CONSOLE - SPRING_DATASOURCE_HIKARI_JDBC_URL=jdbc:postgresql://postgresql/ksbylending - SPRING_MAIL_HOST=mail-server - SPRING_RABBITMQ_HOST=haproxy deploy: mode: replicated replicas: 3 # entrypoint: /bin/bash # stdin_open: true # tty: true
image: ksbysample-webapp-lending:2.4.3
→image: ksbysample-webapp-lending:2.5.4
に変更します。
Docker で複数の Tomcat を起動して動作確認する
docker-compose -f docker-compose.mail.yml up -d
、docker-compose -f docker-compose.app.yml --compatibility up -d
コマンドを実行します。Docker の「Experimental Features」の「Use Docker Compose V2 release candidate」を有効にしていたのですが、V2 では --compatibility
オプションが無くなっているようです。「Use Docker Compose V2 release candidate」を無効にすることにします。
http://localhost:8080/haproxy?stats にアクセスして全てのインスタンスが緑色になるまで待ちます。
以下の手順で動作確認します ( 画面キャプチャは省略します )。
- ブラウザを起動して http://localhost:8080/ にアクセスしてログイン画面を表示します。tanaka.taro@sample.com / taro でログインします。
- 検索対象図書館登録画面が表示されます。"東京都" で検索した後、一覧表示されている図書館から「国立国会図書館東京本館」を選択します。
- ログアウトします。
- ログイン画面に戻るので suzuki.hanako@test.co.jp / hanako でログインします。
- 貸出希望書籍 CSV ファイルアップロード画面が表示されます。以下の内容が記述された CSV ファイルをアップロードします。
"ISBN","書名"
"978-4-7741-6366-6","GitHub実践入門"
"978-4-7741-5377-3","JUnit実践入門"
"978-4-7973-8014-9","Java最強リファレンス"
"978-4-7973-4778-4","アジャイルソフトウェア開発の奥義"
"978-4-87311-704-1","Javaによる関数型プログラミング" - 「貸出状況を確認しました」のメールが送信されるので、メールに記述されている URL にアクセスします。
- 貸出申請画面が表示されます。3冊程「申請する」を選択して申請します。
- ログアウトします。
- 「貸出申請がありました」のメールが送信されるので、メールに記述されている URL にアクセスします。ログイン画面が表示されるので、tanaka.taro@sample.com / taro でログインします。
- 貸出承認画面が表示されます。「承認」あるいは「却下」を選択して確定させます。
- ログアウトします。
- 「貸出申請が承認・却下されました」のメールが送信されるので、メールに記述されている URL にアクセスします。ログイン画面が表示されるので、suzuki.hanako@test.co.jp / hanako でログインします。
- 貸出申請結果確認画面が表示されるので内容を確認します。
動作確認は特に問題ありませんでした。
docker-compose -f docker-compose.app.yml --compatibility down
、docker-compose -f docker-compose.mail.yml down
、docker-compose down
コマンドを実行してコンテナを停止します。
Docker Compose V2 では --compatibility
オプションが無くなったのか。。。と思ったが、docker-compose -f docker-compose.app.yml up -d
で app コンテナが3つ起動する
Docker Compose V2 では --compatibility
オプションが無くなって残念。。。と思ったのですが、試しに --compatibility
オプションを削除して docker-compose -f docker-compose.app.yml up -d
コマンドを実行してみたところ app コンテナが3つ起動しました。--compatibility
オプションなして同じコンテナの複数起動がサポートされるようになったようです。
履歴
2021/09/12
初版発行。