かんがるーさんの日記

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

Spring Boot 2.2.x の Web アプリを 2.3.x へバージョンアップする ( その9 )( Docker コンテナの image をバージョンアップする、postgres・pgadmin4・flyway・docker-mailserver 編 )

概要

記事一覧はこちらです。

Spring Boot 2.2.x の Web アプリを 2.3.x へバージョンアップする ( その8 )( SpotBugs を 4.0.0-beta4 → 4.1.1 へバージョンアップする ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • Docker コンテナの image を1度にバージョンアップしようとしたらいろいろうまく動かないものがあったので、何回かに分割してバージョンアップします。
    • 今回は以下の Docker コンテナの image をバージョンアップします。
      • postgres
      • dpage/pgadmin4
      • flyway/flyway
      • tvial/docker-mailserver

参照したサイト・書籍

目次

  1. .env を変更する
  2. docker-compose up -d コマンドを実行する
  3. pgadmin4 にログインできない問題を解消する
  4. clean タスク実行 → Rebuild Project 実行 → build タスクを実行する
  5. 変更前の docker image を削除する

手順

.env を変更する

..........

POSTGRESQL_VERSION=12.5
PGADMIN4_VERSION=4.29

FLYWAY_VERSION=7.3.1
FLYWAY_URL=jdbc:postgresql://postgresql/ksbylending
FLYWAY_USER=ksbylending_user
FLYWAY_PASSWORD=xxxxxxxx

..........

MAILSERVER_VERSION=release-v7.2.0
  • POSTGRESQL_VERSION=12.1POSTGRESQL_VERSION=12.5 に変更します。
  • PGADMIN4_VERSION=4.16PGADMIN4_VERSION=4.29 に変更します。
  • FLYWAY_VERSION=6.1.3FLYWAY_VERSION=7.3.1 に変更します。
  • MAILSERVER_VERSION=release-v6.2.1MAILSERVER_VERSION=release-v7.2.0 に変更します。

docker-compose up -d コマンドを実行する

以下のコマンドを実行して docker image をダウンロードします(画面キャプチャはなし)。

  1. docker-compose up -d コマンドを実行してコンテナ一式(メールサーバ・rainloop を除く)を起動します。
  2. docker-compose -f docker-compose.mail.yml up -d コマンドを実行してメールサーバ・rainloop のコンテナを起動します。
  3. docker-compose -f docker-compose.mail.yml down コマンドを実行してメールサーバ・rainloop のコンテナを停止・削除します。

pgadmin4 にログインできない問題を解消する

バージョンアップ後に動作確認をしてみたところ、pgAdmin 4 でログインができません。Email/Username is not valid というメッセージが表示されます。

f:id:ksby:20201213174208p:plain f:id:ksby:20201213174335p:plain

4.16 → 4.29 へ一気にバージョンアップしていたので 4.17, 4.18, ..... と1つずつバージョンアップして確認したところ、4.25 までは PGADMIN_DEFAULT_EMAIL、PGADMIN_DEFAULT_PASSWORD に設定した postgres / yyyyyyyy でログインできましたが、4.26 でログインできなくなりました。

https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/authenticate/internal.py を見ると validate_email 関数から False が返ってくるからで、https://github.com/postgres/pgadmin4/blob/c79614786f7250f4ddb14fd63c42d4cc87198b32/web/pgadmin/utils/validation_utils.py#L13 を見ると validate_email 関数でメールアドレスのフォーマットチェックを行っていました。postgres ではログインできないはずです。。。

あと pgAdmin 4 が Flask で作成されていることを初めて知りました。

docker-compose.yml で PGADMIN_DEFAULT_EMAIL=postgresPGADMIN_DEFAULT_EMAIL=postgres@example.com に変更して再度ログインを試してみると、今度は Incorrect username or password. のメッセージが表示されてまだログインできません。

docker/pgadmin4/data/pgadmin4.db に pgAdmin 4 のデータベースがあるので IntelliJ IDEA の Database Tools で開いて中を確認してみます。

f:id:ksby:20201213181007p:plain

Database Tool Window で Data Source に SQLite を選択した後、「File」に docker/pgadmin4/data/pgadmin4.db を指定してから「OK」ボタンをクリックします。

f:id:ksby:20201213181230p:plain f:id:ksby:20201213181347p:plain f:id:ksby:20201213181525p:plain

Database Tool Window に pgadmin4.db が表示されてテーブル一覧の中に user テーブルがあるので開いてみると、

f:id:ksby:20201213181730p:plain

username も email も postgres のままで postgres@example.com に変更されていませんでした。

f:id:ksby:20201213181904p:plain

email を postgrespostgres@example.com に変更してみます。

f:id:ksby:20201213182137p:plain

今度は無事ログインできました。

f:id:ksby:20201213182246p:plain f:id:ksby:20201213182840p:plain

clean タスク実行 → Rebuild Project 実行 → build タスクを実行する

clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると無事 "BUILD SUCCESSFUL" のメッセージが出力されました。

f:id:ksby:20201213191119p:plain

docker-compose -f docker-compose.mail.yml up -d コマンドを実行してメールサーバを起動した後、Spring Boot 2.1.x の Web アプリを 2.2.x へバージョンアップする ( その14 )( Docker で複数の Tomcat を起動して動作確認する ) に記載してある手順で動作確認しても問題ありませんでした。

変更前の docker image を削除する

以下の docker image を削除します。

  • postgres:12.1-alpine
  • dpage/pgadmin4:4.16
  • flyway/flyway:6.1.3-alpine
  • tvial/docker-mailserver:release-v6.2.1

履歴

2020/12/13
初版発行。