LoginSignup
0
0

More than 1 year has passed since last update.

Liberty on Alpine Linux

Last updated at Posted at 2019-05-24

Libertyの実行環境をDocker上に作成します。
websphere-libertyを使っても良いのですが、日本語化したい&Dockerfileや仕組みを理解したいと思い、Dockerfileを書いてみました。websphere-liberty以外にibmjavaを参考にしています。

ibmjava:8-jreは
FROM ubuntu:18.04.3
⇒ IBM JREインストールです。
websphere-libertyは
FROM ibmjava:8-jre
⇒ Libertyインストールです。
これをalpine linux、IBM JRE、libertyのインストール&日本語化します。
よく見るとalpine-minirootfsの入手先書いていませんね。3.16.2なら以下となります。
alpine-minirootfs

Dockerfile例

dockerfile
FROM scratch
ADD alpine-minirootfs-3.16.2-x86_64.tar.gz /

RUN apk update \
    && apk add --no-cache unzip \
    && apk --no-cache --virtual .build-deps add binutils tzdata \
    && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
    && echo "Asia/Tokyo" >  /etc/timezone

ENV GLIBC https://github.com/sgerrand/alpine-pkg-glibc/releases/download
ENV GLIBC_VER 2.34-r0
RUN wget -q ${GLIBC}/${GLIBC_VER}/glibc-${GLIBC_VER}.apk
RUN wget -q ${GLIBC}/${GLIBC_VER}/glibc-bin-${GLIBC_VER}.apk
RUN wget -q ${GLIBC}/${GLIBC_VER}/glibc-i18n-${GLIBC_VER}.apk

RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub

RUN    apk add --no-cache \
           "glibc-${GLIBC_VER}.apk" \
           "glibc-bin-${GLIBC_VER}.apk" \
           "glibc-i18n-${GLIBC_VER}.apk" \
    && rm  "glibc-${GLIBC_VER}.apk" \
           "glibc-bin-${GLIBC_VER}.apk" \
           "glibc-i18n-${GLIBC_VER}.apk" \
    && /usr/glibc-compat/bin/localedef -i ja_JP -f UTF-8 ja_JP.UTF-8 \
    && apk del --purge .build-deps \
    && apk add --no-cache ca-certificates openssl

ENV JAVA_VERSION 8.0.7.20

RUN set -eux; \
    YML_FILE='jre/linux/x86_64/index.yml'; \
    BASE_URL="https://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud/runtimes/java/meta/8.0/"; \
    wget -q -U UA_IBM_JAVA_Docker -O /tmp/index.yml ${BASE_URL}/${YML_FILE}; \
    JAVA_URL=$(sed -n '/^'${JAVA_VERSION}:'/{n;s/\s*uri:\s//p}'< /tmp/index.yml); \
    wget -q -U UA_IBM_JAVA_Docker -O /tmp/ibm-java.bin ${JAVA_URL}; \
    echo "INSTALLER_UI=silent" > /tmp/response.properties; \
    echo "USER_INSTALL_DIR=/opt/ibm/java" >> /tmp/response.properties; \
    echo "LICENSE_ACCEPTED=TRUE" >> /tmp/response.properties; \
    mkdir -p /opt/ibm; \
    chmod +x /tmp/ibm-java.bin; \
    /tmp/ibm-java.bin -i silent -f /tmp/response.properties; \
    rm -f /tmp/response.properties /tmp/index.yml /tmp/ibm-java.bin

# Install WebSphere Liberty
ENV LIBERTY_VERSION 22.0.0.12

ARG LIBERTY_URL 
ARG DOWNLOAD_OPTIONS=""

RUN LIBERTY_URL=${LIBERTY_URL:-$(wget -q -O - https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml  | grep $LIBERTY_VERSION -A 6 | sed -n 's/\s*kernel:\s//p' | tr -d '\r' | head -1 )}  \
    && wget -q $DOWNLOAD_OPTIONS $LIBERTY_URL -U UA-IBM-WebSphere-Liberty-Docker -O /tmp/wlp.zip \
    && unzip -q /tmp/wlp.zip -d /opt/ibm \
    && rm /tmp/wlp.zip

ENV JAVA_HOME=/opt/ibm/java/jre \
    PATH=/opt/ibm/java/jre/bin:/opt/ibm/wlp/bin:$PATH \
    IBM_JAVA_OPTIONS="-XX:+UseContainerSupport" \
    LANG=ja_JP.UTF-8 LANGUAGE=ja_JP.UTF-8

RUN /opt/ibm/wlp/bin/server create
RUN /opt/ibm/wlp/bin/installUtility install defaultServer

EXPOSE 9080 9443

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

起動メッセージ

起動すると以下のメッセージが出力されました。

IBM J9 VM バージョン 8.0.7.20 - pxa6480sr7fp20-20221020_01(SR7 FP20) (ja_JP) で、defaultServer (WebSphere Application Server 22.0.0.12/wlp-1.0.71.cl221220221107-1900) を起動 しています
[AUDIT   ] CWWKE0001I: サーバー defaultServer が起動されました。
[AUDIT   ] CWWKE0100I: この製品は、開発使用向け、および限定的な実動使用向けにライセンスが交付されています。 全ライセンス条項は以下で表示可能です: https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/license/base_ilan/ilan/22.0.0.12/lafiles/ja.html
[警告      ] CWWKF0009W: サーバーは、いずれのフィーチャーもインストールするようには構成されていません。
[AUDIT   ] CWWKF0011I: defaultServer サーバーは、Smarter Planet に対応する準備ができま
した。defaultServer サーバーは 3.164 秒で始動しました。

特徴

・Alpineをベースにしていて、scratchから構築している。
・日本語化している。
・2022/11/23現在の最新版IBM JRE、Libertyを使用している。
・/opt/ibm/wlp/bin/clientなども動かしたいので、/configなどのリンクは使わない。

index.ymlが更新されています。更新されてない場合、index.ymlからパスを取得するのではなく、直接ダウンロードしたものを使うようにしましょう。

https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/22.0.0.4/wlp-kernel-22.0.0.4.zip

おまけ

minirootfsは
aports
のscripts/genrootfs.shを使えば、簡単にできます。
main/busybox配下でbusybox-1.30.1を作成後、それを使ってみます。

./genrootfs.sh -o test-x86_64.tar.gz busybox-1.30.1-r1.apk \
    ssl_client-1.30.1-r1.apk \
    alpine-baselayout alpine-keys apk-tools libc-utils

8/26時点でalpine:latestのDockerfileは以下でした。

FROM scratch
ADD alpine-minirootfs-3.10.2-x86_64.tar.gz /
CMD ["/bin/sh"]

参考リンク

How_to_make_a_custom_ISO_image_with_mkimage
Alpine Linux用パッケージを作成する

チェックしたいサイトは以下です。
・IBM JRE
https://public.dhe.ibm.com/ibmdl/export/pub/systems/cloud/runtimes/java/meta/jre/linux/x86_64/index.yml
・Liberty
https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml

Libertyのリリース予定は
Recommended updates for WebSphere Application Serverにありますが、あくまで予定なので実際に早まることが多いです。

変更履歴

(2019/6/22) rootfsを3.9.3から3.10.0に変更、Libertyを19.0.0_06に変更
(2019/6/27) keytoolが以下のエラーになるので、ホスト名変更を追加
デフォルトの SSL 証明書を作成できません。
keytool エラー (英語の場合があります): java.lang.RuntimeException: java.io.IOException: Invalid IPAddressName 992fdba70de5
(2019/7/11)jreを1.8.0_sr5fp37に変更。server.xml、earのコピーを削除。ホスト名の設定部分を削除。
(2019/7/24)index.ymlに無いバージョンの対処を追加。19.0.0.7など。
(2019/8/1x?)[index.yml]https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml)が更新されていましたので、ベースのLibertyを19.0.0.7に変更。
(2019/8/21)JREを1.8.0_sr5fp40に、Libertyを19.0.0.8にバージョンアップ。
(2019/8/26)alpine linuxのバージョンを3.10.2に変更。ALPINE_GLIBCのバージョンを2.30に変更。
(2019/9/15)Libertyを19.0.0.9にバージョンアップ。
(2019/9/29)jreの8.0.5.41について追記。
(2019/10/11)Libertyの19.0.0.10がリリースされた。index.yamlも更新されています。
(2019/10/22)Liberty-19.0.0.10に更新しきれなかった部分を修正。
(2019/10/23)Alpineのrootfsを3.10.3に更新。
(2019/11/13)Libertyを19.0.0.11にバージョンアップ。
(2020/3/6)Libertyを20.0.0.2に、Alpineのrootfsを3.11.3に、jreを8.0.6.5にバージョンアップ。
(2020/3/24)Libertyを20.0.0.3に、Alpineのrootfsを3.11.5にバージョンアップ。
(2020/4/12)Libertyを20.0.0.4に、jreを8.0.6.7にバージョンアップ。ただし、Libertyはindex.ymlにまだないです。
(2020/4/15)Liberty-20.0.0.4がindex.ymlに入ったので修正。Libertyのバージョン指定を修正。
(2020/5/8)Libertyを20.0.0.5に、jreを8.0.6.10にバージョンアップ。
修正。Libertyのバージョン指定を修正。
(2020/5/23)alpline linuxを3.11.6にバージョンアップ、websphere-libertyの状況を更新。
(2020/6/12)alpline linuxを3.12.0に、Libertyを20.0.0.6にバージョンアップ。
(2020/6/27)jreを8.0.6.11にバージョンアップ。
(2020/7/8)Libertyを20.0.0.7にバージョンアップ。
(2020/8/5)Libertyを20.0.0.8にバージョンアップ。
(2020/9/13)Libertyを20.0.0.9に、jreを8.0.6.15にバージョンアップ。
(2020/9/30)Libertyを20.0.0.10に、jreを8.0.6.16にバージョンアップ。
(2020/12/11)Libertyを20.0.0.12にバージョンアップ。
(2020/12/11)jreを8.0.6.20にバージョンアップ。
(2021/02/19)Libertyを21.0.0.2にバージョンアップ。
(2021/03/15)jreを8.0.6.26にバージョンアップ。
(2021/03/22)Libertyを21.0.0.3にバージョンアップ。
(2021/03/31)alpline linuxを3.13.3にバージョンアップ。
(2021/05/05)alpline linuxを3.13.5にバージョンアップ。Libertyを21.0.0.4にバージョンアップ。
(2021/05/31)Libertyを21.0.0.5に、jreを8.0.6.30にバージョンアップ。
(2021/07/26)alpline linuxを3.14.0に、Libertyを21.0.0.7に、jreを8.0.6.31にバージョンアップ。
(2021/08/21)alpline linuxを3.14.1に、Libertyを21.0.0.8にバージョンアップ
(2021/09/17)alpline linuxを3.14.2に、Libertyを21.0.0.9に、jreを8.0.6.36にバージョンアップ。
(2021/12/19)alpline linuxを3.15.0に、Libertyを21.0.0.12に、jreを8.0.7.0にバージョンアップ。
(2022/01/01)GNU C Libraryの取得方法を変更。busyboxのバージョンを1.34.1
(2022/01/18)Libertyを22.0.0.1にバージョンアップ。
(2022/02/15)Libertyを22.0.0.2にバージョンアップ。
(2022/03/10)jreを8.0.7.5にバージョンアップ。
(2022/03/26)Libertyを22.0.0.3に、alpline linuxを3.15.2にバージョンアップ。
(2022/04/01)alpline linuxを3.15.3にバージョンアップ。
(2022/04/22)Libertyを22.0.0.4に、alpline linuxを3.15.4にバージョンアップ。
(2022/04/30)jreを8.0.7.6にバージョンアップ。
(2022/05/28)Libertyを22.0.0.5に、alpline linuxを3.16.0にバージョンアップ。
(2022/06/12)Libertyを22.0.0.6にバージョンアップ。
(2022/07/13)Libertyを22.0.0.7にバージョンアップ。
(2022/07/13)jreを8.0.7.11にバージョンアップ。
(2022/07/14)起動メッセージ張り直し。
(2022/08/04)Libertyを22.0.0.8に、alpline linuxを3.16.1にバージョンアップ。busybox関連は別記事に移動しました。
(2022/08/31)Libertyを22.0.0.9に、alpline linuxを3.16.2にバージョンアップ。
(2022/09/21)jreを8.0.7.11にバージョンアップ。
(2022/10/29)jreを8.0.7.15に、Libertyを22.0.0.11にバージョンアップ。Libertyのindex.ymlからの検索を修正。
(2022/11/23)jreを8.0.7.20に、Libertyを22.0.0.12にバージョンアップ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0