Universal Base Images (UBI) 9 Minimal を日本語ロケールにする

以前、 Universal Base Images (UBI) **8** を日本語ロケール ja_JP.utf8 に変更する記事(下記参照)を書きましたが、今回は UBI **9 Minimal** を日本語ロケールに変更してみます。

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

## ロケール変更作業の違い
前回の記事の最後に書いたように、UBI **8** Minimal では、`microdnf install -y tzdata` でゾーン情報(tzdata)を追加できず、力業で追加する必要がありました。しかし、UBI **9** Minimal では `microdnf install -y tzdata` で追加できるようになっていました。
このため、ロケール変更において、UBI **8** と UBI **9 Minimal** で差が出るのは、以下の点だけとなります。

- dnf (yum) の代わりに microdnf を利用する
- localedef が使用する gzip もインストールする （不要なら後で削除する）
- `microdnf install -y tzdata` で、tzdata をインストールする

## 日本語ロケールにしたイメージをビルドする
では、Dockerfile を作ってイメージをビルドします。以下のような Dockerfile にしてみました。
RUN コマンドの最初で `microdnf update -y` を実行していますが、不要なら削除してください。gzip は使用後にアンインストールしていますので、必要なら残してください。

``` Dockerfile
FROM registry.access.redhat.com/ubi9/ubi-minimal:latest
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"
```

ビルドして確認してみます。

```
$ docker build -t ubi9-minimal-jp .
[+] Building 4.4s (6/6) FINISHED
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [internal] load build definition from Dockerfile                                                               0.0s
 => => transferring dockerfile: 512B                                                                               0.0s
 => [internal] load metadata for registry.access.redhat.com/ubi9/ubi-minimal:latest                                0.0s
 => [1/2] FROM registry.access.redhat.com/ubi9/ubi-minimal:latest                                                  0.0s
 => [2/2] RUN microdnf update -y  && microdnf install -y glibc-locale-source gzip tzdata  && localedef -i ja_JP -  4.1s
 => exporting to image                                                                                             0.2s
 => => exporting layers                                                                                            0.2s
 => => writing image sha256:2318bc35314c77e29e90ddfe78f6a3a03682e199888b19d44d53ed75677caf7e                       0.0s
 => => naming to docker.io/library/ubi9-minimal-jp                                                                 0.0s
$
$
$ docker run --rm -it ubi9-minimal-jp bash
[root@f04ec791ac0b /]# date
2024年  2月 26日 月曜日 15:51:49 JST
[root@f04ec791ac0b /]#
[root@f04ec791ac0b /]# ls -al
total 72
drwxr-xr-x   1 root root 4096  2月 26 15:51 .
(省略)
drwxr-xr-x   1 root root 4096  1月 18 04:09 var
[root@f04ec791ac0b /]#
[root@f04ec791ac0b /]# sss
bash: sss: command not found
[root@f04ec791ac0b /]#
```

## 最後に
UBI **8** Minimal の時は苦労したのですが、、、
UBI **9** Minimal ではあっさりと日本語ロケールに変更することができました。