WAS Liberty を日本語ロケールで起動する

いつの間にか、WAS Liberty のお勧めイメージが Universal Base Images (UBI) 8 をベースにしたものに変わっていました。
UBI 8 ベースの WAS Liberty のイメージを日本語ロケールで使用できるようにカスタマイズしてみます。

## UBI 8 ベースのイメージがお勧めに
久しぶりに WAS Liberty イメージの official repository を見ていると、UBI 8 ベースのイメージがお勧めになっていました。

- 参照： [WebSphere Application Server Liberty Profile and Docker](https://github.com/WASdev/ci.docker)
<details><summary>引用(文書作成時の内容)</summary>
<img 無題0.png src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555650/24c7321c-8b97-5839-b780-fbdb8fa36684.png>
</details>

以前からの Ubuntu ベースのイメージと UBI ベースのイメージで Docker Hub も分かれているようです。

- 以前からのイメージの Docker Hub：[websphere-liberty](https://hub.docker.com/_/websphere-liberty)
- UBI ベースのイメージの Docker Hub：[ibmcom/websphere-liberty](https://hub.docker.com/r/ibmcom/websphere-liberty)

Ubuntu ベースのイメージに関しては、ロケールを変える方法が Docker Hub に記載されていたのですが、UBI ベースの方には記載がないようです。。。

<details><summary>Ubuntu ベースのイメージのロケール変更方法：引用(文書作成時の内容)</summary>
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555650/0c644aed-4018-2139-2265-e9eae749992f.png>
</details>

## 日本語ロケールに変える
[前回の記事](https://qiita.com/splendormy/items/99058fc0d5463e10c696)の内容を利用して、UBI ベースの WAS Liberty のイメージを日本語ロケールに変更してみます。
手順は分かっているので、Dockerfile を作ってイメージをビルドします。以下のような Dockerfile にしてみました。USER の切り替えが入るだけで、以前の内容と同じです。

``` Dockerfile 
FROM ibmcom/websphere-liberty:19.0.0.12-full-java8-ibmjava-ubi
USER 0
RUN  dnf update -y \
  && dnf install -y glibc-locale-source \
  && 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 \
  && dnf remove -y glibc-locale-source \
  && dnf 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
```

ビルドします。

```
C:\liberty-ubi-jp>docker build -t liberty-ubi-jp .
Sending build context to Docker daemon  2.048kB
Step 1/5 : FROM ibmcom/websphere-liberty:19.0.0.12-full-java8-ibmjava-ubi
19.0.0.12-full-java8-ibmjava-ubi: Pulling from ibmcom/websphere-liberty
(省略)
Step 2/5 : USER 0
(省略)
Step 3/5 : RUN  dnf update -y   && dnf install -y glibc-locale-source   && 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   && dnf remove -y glibc-locale-source   && dnf clean all   && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
(省略)
Step 4/5 : ENV LANG="ja_JP.UTF-8"     TZ="Asia/Tokyo"
(省略)
Step 5/5 : USER 1001
(省略)
Successfully built e4171b20ba08
Successfully tagged liberty-ubi-jp:latest
(省略)
```

## 起動してみる

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

```
C:\liberty-ubi-jp>docker run --rm -it liberty-ubi-jp

IBM J9 VM バージョン 8.0.6.0 - pxa6480sr6-20191107_01(SR6) (ja_JP) で、defaultServer (WebSphere Application Server 19.0.0.12/wlp-1.0.35.cl191220191120-0300) を起動しています
[AUDIT   ] CWWKE0001I: サーバー defaultServer が起動されました。
(省略)
[AUDIT   ] CWWKF0011I: defaultServer サーバーは、Smarter Planet に対応する準備ができました。defaultServer サーバーは 32.056 秒で始動しました。
```
当然ですが、元のイメージを起動すると、英語のメッセージが出力されます。

```
C:\liberty-ubi-jp>docker run --rm -it ibmcom/websphere-liberty:19.0.0.12-full-java8-ibmjava-ubi

Launching defaultServer (WebSphere Application Server 19.0.0.12/wlp-1.0.35.cl191220191120-0300) on IBM J9 VM, version 8.0.6.0 - pxa6480sr6-20191107_01(SR6) (en_US)
[AUDIT   ] CWWKE0001I: The server defaultServer has been launched.
(省略)
[AUDIT   ] CWWKF0011I: The defaultServer server is ready to run a smarter planet. The defaultServer server started in 31.988 seconds.
```