UBI 9 Minimal ベースの WebSpehre Liberty を日本語ロケールで起動する

UBI **9 Minimal** ベースのイメージが、Java 21 に対応した WebSphere Liberty で提供されるようになりました。UBI **9 Minimal** ベースのイメージはさらに軽量になっています。

今回は、UBI **9 Minimal** ベースの WebSphere Liberty を日本語ロケールで使用できるようにカスタマイズしてみます。

## 日本語ロケールに変える
前回の記事(下記参照)の内容を利用して、UBI **9 Minimal** ベースの WebSphere Liberty のイメージを日本語ロケールに変更してみます。

- 参照：[Universal Base Images (UBI) 9 Minimal を日本語ロケールにする](https://qiita.com/splendormy/items/e075538235218b75777b)

手順は分かっているので、Dockerfile を作ってイメージをビルドします。以下のような Dockerfile にしてみました。USER の切り替えが入るだけで、前回の内容と同じです。

``` Dockerfile 
FROM icr.io/appcafe/websphere-liberty:kernel-java21-openj9-ubi-minimal
USER 0
RUN microdnf update -y \
 && microdnf install -y glibc-locale-source gzip tzdata \
 && localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8 \
 && echo LANG=ja_JP.UTF-8 > /etc/locale.conf \
 && microdnf remove -y glibc-locale-source gzip \
 && microdnf clean all \
 && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ENV LANG="ja_JP.UTF-8" \
    LC_ALL="ja_JP.UTF-8" \
    TZ="Asia/Tokyo"
USER 1001
```

ビルドします。

```
$ docker build -t kernel-java21-openj9-ubi-minimal-jp .
[+] Building 3.5s (6/6) FINISHED
 => [internal] load build definition from Dockerfile                                                               0.0s
 => => transferring dockerfile: 602B                                                                               0.0s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [internal] load metadata for icr.io/appcafe/websphere-liberty:kernel-java21-openj9-ubi-minimal                 0.0s
 => [1/2] FROM icr.io/appcafe/websphere-liberty:kernel-java21-openj9-ubi-minimal                                   0.0s
 => [2/2] RUN microdnf update -y  && microdnf install -y glibc-locale-source gzip tzdata  && localedef -i ja_JP -  3.3s
 => exporting to image                                                                                             0.1s
 => => exporting layers                                                                                            0.1s
 => => writing image sha256:8794cf91d82c768cb5ab55adab9790ff6e963d69952e30789ea22895124b7f56                       0.0s
 => => naming to docker.io/library/kernel-java21-openj9-ubi-minimal-jp                                             0.0s
$
```

## 起動してみる

ビルドしたイメージを docker run すると、日本語のメッセージが出力され、日本語ロケールに変わっていることが確認できます。

```
$ docker run --rm -it kernel-java21-openj9-ubi-minimal-jp

WARNING: Unknown module: jdk.management.agent specified to --add-exports
WARNING: Unknown module: jdk.attach specified to --add-exports
Eclipse OpenJ9 VM バージョン 21.0.2+13-LTS (ja_JP) で、defaultServer (WebSphere Application Server 24.0.0.1/wlp-1.0.85.cl240120240115-2042) を起動しています
[監査      ] CWWKE0001I: サーバー defaultServer が起動されました。
[監査      ] CWWKE0100I: この製品は、開発使用向け、および限定的な実動使用向けにライセンスが交付されています。 全ライセンス条項は以下で表示可能です: https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/license/base_ilan/ilan/24.0.0.1/lafiles/ja.html
[監査      ] CWWKG0093A: 構成ドロップイン・リソースを処理中です: /opt/ibm/wlp/usr/servers/defaultServer/configDropins/defaults/keystore.xml
[警告      ] CWWKF0009W: サーバーは、いずれのフィーチャーもインストールするようには構成されていません。
[監査      ] CWWKF0012I: サーバーは次のフィーチャーをインストールしました。[]。
[監査      ] CWWKF0011I: defaultServer サーバーは、Smarter Planet に対応する準備ができました。defaultServer サーバーは 0.585 秒で始動しました。.
```

当然ですが、元のイメージを起動すると、英語のメッセージが出力されます。

```
$ docker run --rm -it icr.io/appcafe/websphere-liberty:kernel-java21-openj9-ubi-minimal

WARNING: Unknown module: jdk.management.agent specified to --add-exports
WARNING: Unknown module: jdk.attach specified to --add-exports
Launching defaultServer (WebSphere Application Server 24.0.0.1/wlp-1.0.85.cl240120240115-2042) on Eclipse OpenJ9 VM, version 21.0.2+13-LTS (en_US)
[AUDIT   ] CWWKE0001I: The server defaultServer has been launched.
[AUDIT   ] CWWKE0100I: This product is licensed for development, and limited production use. The full license terms can be viewed here: https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/license/base_ilan/ilan/24.0.0.1/lafiles/en.html
[AUDIT   ] CWWKG0093A: Processing configuration drop-ins resource: /opt/ibm/wlp/usr/servers/defaultServer/configDropins/defaults/keystore.xml
[WARNING ] CWWKF0009W: The server has not been configured to install any features.
[AUDIT   ] CWWKF0012I: The server installed the following features: [].
[AUDIT   ] CWWKF0011I: The defaultServer server is ready to run a smarter planet. The defaultServer server started in 0.500 seconds.
```

## 最後に
UBI **9 Minimal** ベースの WebSphere Liberty を日本語ロケールで起動する手順をまとめてみました。
UBI **8** ベースの場合の手順とあまり変わりませんが、参考になれば幸いです。