2.4.3 uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの作成(通常版限定)
このコンテナベースイメージは、通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime with Java for Spring Bootを導入する場合だけ作成します。
uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージは、uCosminexus Application Runtime with Java for Spring Bootを導入するユーザ責務のコンテナイメージのベースイメージとして使用します。uCosminexus Application Runtime with Java for Spring Bootのインストール部分を共通のベースイメージとして作成することで、各種コンテナイメージのContainerfileの記述量の軽減、およびビルドした各種コンテナイメージのサイズを低減できるメリットがあります。
uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの作成方法について説明します。
(1) Containerfileの作成
「4.3.1 uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ(通常版限定)」に記載されている要件を満たすように、uCosminexus Application Runtime with Java for Spring BootコンテナベースイメージをビルドするためのContainerfileを作成してください。
Containerfileの記述例を次に示します。
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860 AS builder …1
RUN microdnf install \ …2
-y \
--setopt=install_weak_deps=0 \
--nodocs \
ncompress \
ncurses \
tar \
cpio \
gzip
WORKDIR /tmp
RUN mkdir ./X64LIN …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HL0T ./
RUN mkdir patch …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860 …5
COPY --from=builder /opt /opt …6
COPY --from=builder /etc/.java /etc/.java …7
RUN microdnf install \
-y \
--setopt=install_weak_deps=0 \
--nodocs \
dnf \
&& dnf install \
-y \
--setopt=install_weak_deps=0 \
--nodocs \
--allowerasing \
curl-7.61.1 \
jq-1.6 \
<uCosminexus Application Runtime with Java for Spring Bootの前提RPMパッケージ> …8
:
&& dnf clean all \
&& rm -rf /var/cache/dnf/*
ENV PATH=/opt/Cosminexus/jdk/bin:$PATH …9
USER 1001:0 …10
WORKDIR /deployments …11記述例の番号1〜11は、説明の番号1.〜11.と対応しています。
-
マルチステージビルド用のコンテナベースイメージとしてUBI 8の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 8 Minimal 8.8」を使用しています。
-
uCosminexus Application Runtime with Java for Spring Bootのインストーラの前提RPMパッケージをインストールします。
-
uCosminexus Application Runtime with Java for Spring Bootのインストーラをコンテナ上に展開してインストールを実行します(「-c」オプションに「HL0T」(uCosminexus Application Runtime with Java for Spring Boot)を指定して実行してください)。
-
オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Bootの修正パッチを適用する場合だけ記述します。
uCosminexus Application Runtime with Java for Spring Bootの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します(「-f」オプションを指定して実行してください)。
-
コンテナベースイメージとしてUBI 8の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 8 Minimal 8.8」を使用しています。
-
マルチステージビルド用のコンテナイメージからuCosminexus Application Runtime with Java for Spring Bootのインストール先ディレクトリ「/opt」をコピーします。これによって、このコンテナイメージにuCosminexus Application Runtime with Java for Spring Bootをインストールした状態となります。
-
HMP-PCTOの前提RPMパッケージをインストールします。
-
uCosminexus Application Runtime with Java for Spring Bootの前提RPMパッケージをインストールします。
オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Bootのリリースノートを参照し、uCosminexus Application Runtime with Java for Spring Bootに必要な前提RPMパッケージを記述してください。
-
環境変数PATHの先頭に、日立JDKのコマンド群がインストールされているディレクトリを追加します。
-
任意のコンテナ実行ユーザ・グループを指定します。
-
アプリケーション配置用ディレクトリを作成します。
- ヒント
-
Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定
Red Hat OpenShift Container Platformには、SCC(Security Context Constraints)と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、PodのKubernetesマニフェストでrunAsUserフィールドによるコンテナ起動ユーザが未設定の場合、コンテナイメージビルド時に設定したユーザ・グループを使用しないで、一定範囲内のランダムなUID(非root)とGID「0」(root)でコンテナを実行します。
このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」(root)を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。
(2) Containerfileと資材の配置
次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。
|
ファイル/ディレクトリ構成 |
作成・提供元 |
備考 |
|
|---|---|---|---|
|
<コンテナイメージビルド作業ディレクトリ>/ |
ユーザ |
− |
|
|
Containerfile |
ユーザ |
− |
|
|
X64LIN (uCosminexus Application Runtime with Java for Spring Bootのインストーラ) |
日立 |
uCosminexus Application Runtime with Java for Spring BootのインストールCD-ROMに格納されているX64LINディレクトリをコピーしてください。 |
|
|
PACK_TAR.Z (uCosminexus Application Runtime with Java for Spring Bootの修正パッチ) |
日立 |
uCosminexus Application Runtime with Java for Spring Bootの修正パッチを適用する場合だけ格納してください。 |
|
(3) コンテナイメージのビルド
Containerfileを使用して、コンテナイメージをビルドします。
uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージのビルドのコマンドを次に示します。
cd <コンテナイメージビルド作業ディレクトリ>/ docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]ucars:<uCosminexus Application Runtime with Java for Spring Bootバージョン(V.R.S※)>△.
(凡例)△:半角スペース1文字
<実行例>
cd build/ docker build -f ./Containerfile -t myregistry.example.com/myproject/ucars:V.R.S※ .
この例では、uCosminexus Application Runtime with Java for Spring Bootバージョンを「V.R.S※」としています。
- 注※
-
V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。
(4) コンテナイメージの登録
ビルドしたuCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。
インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。