かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その14 )( google_checks.xml に Record に関する定義を反映する+bootBuildImage タスクで Java 17 ベースの Docker Image を作成して動作確認する )

概要

記事一覧はこちらです。

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 へバージョンアップする ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • Java 17 にバージョンアップしたので、checkstyle の定義ファイル google_checks.xml にエラーが出るので未反映だった Record に関する定義を反映します。
    • bootBuildImage タスクを実行して Java 17 ベースの docker.io/library/ksbysample-webapp-lending:2.5.5 の Docker Image を作成して動作確認します。

参照したサイト・書籍

  1. checkstyle/checkstyle - checkstyle/src/main/resources/google_checks.xml
    https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml

  2. "network default: network.external.name is deprecated in favor of network.name"
    https://github.com/docker/compose-cli/issues/1856

目次

  1. google_checks.xml に Record に関する定義を反映する
  2. bootBuildImage タスクで Java 17 ベースの Docker Image を生成し動作確認する

手順

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" のメッセージが出力されました。

f:id:ksby:20210929113541p:plain

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 対応されているようです。

f:id:ksby:20210929115624p:plain .......... f:id:ksby:20210929115743p:plain

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.4image: 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 というメッセージが出力されていることに気づきました。

f:id:ksby:20210929131123p:plain

調べてみると 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 -ddocker-compose -f docker-compose.app.yml up -d コマンドを実行します。

f:id:ksby:20210929132750p:plain

http://localhost:8080/haproxy?stats にアクセスして全てのインスタンスが緑色になるまで待ちます。

f:id:ksby:20210929132919p:plain

Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その11 )( Docker で複数の Tomcat を起動して動作確認する ) に書いてある手順で動作確認します(画面キャプチャは省略します)。

動作確認は特に問題ありませんでした。

docker-compose -f docker-compose.app.yml downdocker-compose -f docker-compose.mail.yml downdocker-compose down コマンドを実行してコンテナを停止します。

履歴

2021/09/29
初版発行。