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
参照したサイト・書籍
目次
- .env を変更する
docker-compose up -d
コマンドを実行する- pgadmin4 にログインできない問題を解消する
- clean タスク実行 → Rebuild Project 実行 → build タスクを実行する
- 変更前の 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.1
→POSTGRESQL_VERSION=12.5
に変更します。PGADMIN4_VERSION=4.16
→PGADMIN4_VERSION=4.29
に変更します。FLYWAY_VERSION=6.1.3
→FLYWAY_VERSION=7.3.1
に変更します。MAILSERVER_VERSION=release-v6.2.1
→MAILSERVER_VERSION=release-v7.2.0
に変更します。
docker-compose up -d
コマンドを実行する
以下のコマンドを実行して docker image をダウンロードします(画面キャプチャはなし)。
docker-compose up -d
コマンドを実行してコンテナ一式(メールサーバ・rainloop を除く)を起動します。docker-compose -f docker-compose.mail.yml up -d
コマンドを実行してメールサーバ・rainloop のコンテナを起動します。docker-compose -f docker-compose.mail.yml down
コマンドを実行してメールサーバ・rainloop のコンテナを停止・削除します。
pgadmin4 にログインできない問題を解消する
バージョンアップ後に動作確認をしてみたところ、pgAdmin 4 でログインができません。Email/Username is not valid
というメッセージが表示されます。
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=postgres
→ PGADMIN_DEFAULT_EMAIL=postgres@example.com
に変更して再度ログインを試してみると、今度は Incorrect username or password.
のメッセージが表示されてまだログインできません。
docker/pgadmin4/data/pgadmin4.db に pgAdmin 4 のデータベースがあるので IntelliJ IDEA の Database Tools で開いて中を確認してみます。
Database Tool Window で Data Source に SQLite を選択した後、「File」に docker/pgadmin4/data/pgadmin4.db を指定してから「OK」ボタンをクリックします。
Database Tool Window に pgadmin4.db が表示されてテーブル一覧の中に user テーブルがあるので開いてみると、
username も email も postgres
のままで postgres@example.com
に変更されていませんでした。
email を postgres
→ postgres@example.com
に変更してみます。
今度は無事ログインできました。
clean タスク実行 → Rebuild Project 実行 → build タスクを実行する
clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると無事 "BUILD SUCCESSFUL" のメッセージが出力されました。
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
初版発行。