Docker
Liberty

Liberty on Docker(ubuntu)

websphere-libertyを日本語化してみた。

Dockerfileを以下としました。

FROM websphere-liberty:19.0.0.5-kernel as builder

ENV DEBCONF_NOWARNINGS yes

FROM websphere-liberty:19.0.0.5-kernel
USER root
RUN apt-get update \
&& apt-get -y install language-pack-ja \
&& update-locale LANG=ja_JP.UTF-8
ENV LANG ja_JP.UTF-8

USER 1001
RUN /opt/ibm/wlp/bin/installUtility install --acceptLicense defaultServer \
&& /opt/ibm/wlp/bin/securityUtility createSSLCertificate --server=defaultServer --password=test1234

EXPOSE 9080 9443

CMD ["/opt/ibm/wlp/bin/server", "run", "defaultServer"]

最初、apt-getする際、rootにしなかったのでエラーになった。websphere-libertyはユーザdefault(idは1001)で動くよう作られているんですね。また、createSSLCertificateを実行するとき、パスワードが短かったので怒られました。。

サイズの差は以下の通りです。

REPOSITORY                                 TAG                      IMAGE ID            CREATED              SIZE

websphere-liberty 19.0.0.5-kernelJP ff1fd694c225 About a minute ago 410MB
websphere-liberty 19.0.0.5-kernel 30e139ebfe3e 9 days ago 344MB
websphere-liberty 19.0.0.5-microProfile2 8acc64c44c06 6 days ago 459MB

動かすとこんな感じです。

IBM J9 VM バージョン 8.0.5.36 - pxa6480sr5fp36-20190510_01(SR5 FP36) (ja_JP) で、defaultServer (WebSphere Application Server 19.0.0.5/wlp-1.0.28.cl190520190522-2227) を起動しています

[AUDIT ] CWWKE0001I: サーバー defaultServer が起動されました。
[AUDIT ] CWWKE0100I: この製品は、開発使用向け、および限定的な実動使用向けにライセンスが交付されています。 全ライセン ス条項は以下で表示可能です: https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/license/base_ilan/ilan/19.0.0.5/lafiles/ja.html
[AUDIT ] CWWKG0093A: 構成ドロップイン・リソースを処理中です: /opt/ibm/wlp/usr/servers/defaultServer/configDropins/defaults/keystore.xml
[警告 ] CWWKF0009W: サーバーは、いずれのフィーチャーもインストールするようには構成されていません。
[AUDIT ] CWWKF0011I: defaultServer サーバーは、Smarter Planet に対応する準備ができました。defaultServer サーバーは 0.546 秒で始動しました。

別画面でexecし、dateコマンドを叩いた。

C:\Windows\System32>docker exec -it pensive_germain bash

default@63e96552ede9:/$ ls
bin config etc lib lib64 licenses media opt proc run srv tmp var
boot dev home lib.index.cache liberty logs mnt output root sbin sys usr
default@63e96552ede9:/$ date
2019年 6月 7日 金曜日 08:31:06 UTC
default@63e96552ede9:/$

UTCのままですね。JSTに変えてみます

C:\kazu>docker run -it -u 0 --rm websphere-liberty:19.0.0.5-kernelJP bash

root@6be8a5c31c11:/# date
2019年 6月 7日 金曜日 08:57:37 UTC
root@6be8a5c31c11:/# apt-get install tzdata
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
tzdata
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 15 個。
167 kB のアーカイブを取得する必要があります。
この操作後に追加で 2,867 kB のディスク容量が消費されます。
取得:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 tzdata all 2019a-0ubuntu0.16.04 [167 kB]
167 kB を 1秒 で取得しました (103 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
以前に未選択のパッケージ tzdata を選択しています。
(データベースを読み込んでいます ... 現在 5888 個のファイルとディレクトリがインストールされています。)
.../tzdata_2019a-0ubuntu0.16.04_all.deb を展開する準備をしています ...
tzdata (2019a-0ubuntu0.16.04) を展開しています...
tzdata (2019a-0ubuntu0.16.04) を設定しています ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype

Current default time zone: 'Etc/UTC'
Local time is now: Fri Jun 7 08:57:56 UTC 2019.
Universal Time is now: Fri Jun 7 08:57:56 UTC 2019.
Run 'dpkg-reconfigure tzdata' if you wish to change it.

root@6be8a5c31c11:/# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
root@6be8a5c31c11:/# date
2019年 6月 7日 金曜日 17:58:12 JST
root@6be8a5c31c11:/#

これらを踏まえて、Dockerfileを変更しました。

FROM websphere-liberty:19.0.0.5-kernel as builder

ENV DEBCONF_NOWARNINGS yes

FROM websphere-liberty:19.0.0.5-kernel
USER root
RUN apt-get update \
&& apt-get -y install language-pack-ja tzdata \
&& update-locale LANG=ja_JP.UTF-8 \
&& ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ENV LANG ja_JP.UTF-8

USER 1001
RUN /opt/ibm/wlp/bin/installUtility install --acceptLicense defaultServer \
&& /opt/ibm/wlp/bin/securityUtility createSSLCertificate --server=defaultServer --password=test1234

EXPOSE 9080 9443

CMD ["/opt/ibm/wlp/bin/server", "run", "defaultServer"]

Dockerfileを変更し、再度ビルド後、動かします。

C:\kazu>docker run -it --rm websphere-liberty:19.0.0.5-kernelJP bash

default@c3b72744f090:/$ date
2019年 6月 7日 金曜日 23:28:32 JST
default@c3b72744f090:/$

ちゃんど、JSTになっています。

ベースをkernelにしたので、インストールされるfeatureはありません。server.xmlを修正して、インストールしようかな。


不満な部分

ベースOSがubuntu 16.04と古いこと。

本体のLibertyリリースとdockerのリリース時期がずれていること。