2.3.3 uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成(通常版限定)
このコンテナベースイメージは、通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime for Spring Bootを導入する場合だけ作成します。
uCosminexus Application Runtime for Spring Bootコンテナベースイメージは、uCosminexus Application Runtime for Spring Bootを導入するユーザ責務のコンテナイメージのベースイメージとして使用します。uCosminexus Application Runtime for Spring Bootのインストール部分を共通のベースイメージとして作成することで、各種コンテナイメージのContainerfileの記述量の軽減、およびビルドした各種コンテナイメージのサイズを低減できるメリットがあります。
uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成方法について説明します。
(1) Containerfileの作成
「6.3.1 uCosminexus Application Runtime for Spring Bootコンテナベースイメージ(通常版限定)」に記載されている要件を満たすように、uCosminexus Application Runtime for Spring BootコンテナベースイメージをビルドするためのContainerfileを作成してください。
Containerfileの記述例を次に示します。
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212 AS builder …1
RUN microdnf install \ …2
-y \
--setopt=install_weak_deps=0 \
--nodocs \
ncurses \
tar \
cpio \
gzip
WORKDIR /tmp
RUN mkdir ./X64LIN …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HL0R ./
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/ubi9/ubi-minimal:9.5-1742914212 …5
COPY --from=builder /opt /opt …6
RUN microdnf install \ …7
-y \
--setopt=install_weak_deps=0 \
--nodocs \
dnf \
&& dnf install \
-y \
--setopt=install_weak_deps=0 \
--nodocs \
--allowerasing \
java-21-openjdk-headless \ …8
curl-minimal \
jq \
<uCosminexus Application Runtime for Spring Bootの前提RPMパッケージ> …9
:
&& dnf clean all \
&& rm -rf /var/cache/dnf/*
ENV PATH=/usr/lib/jvm/java-21-openjdk-21.0.7.0.6-1.el9.x86_64/bin:$PATH …8
RUN chgrp -R 1001 /opt/hitachi/ucars …10
USER 1001:0 …11
WORKDIR /deployments …12
記述例の番号は、説明の番号と対応しています。
<説明>
-
マルチステージビルド用のコンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。
-
「RUN microdnf install \」の行から「gzip」の行で、uCosminexus Application Runtime for Spring Bootのインストーラの前提RPMパッケージをインストールします。コンテナベースイメージがUBI 8の場合は、ncompressもインストールしてください。
-
「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HL0R ./」の行で、uCosminexus Application Runtime for Spring Bootのインストーラをコンテナ上に展開してインストールを実行します(「-c」オプションに「HL0R」(uCosminexus Application Runtime for Spring Boot)を指定して実行してください)。
-
このオレンジ色の背景で示す行は、uCosminexus Application Runtime for Spring Bootの修正パッチを適用する場合だけ記述します。
uCosminexus Application Runtime for Spring Bootの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します(「-f」オプションを指定して実行してください)。
-
コンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。
-
マルチステージビルド用のコンテナイメージからuCosminexus Application Runtime for Spring Bootのインストール先ディレクトリ「/opt」をコピーします。これによって、このコンテナイメージにuCosminexus Application Runtime for Spring Bootをインストールした状態となります。
-
「RUN microdnf install \」の行から「jq \」の行で、HMP-PCTOの前提RPMパッケージをインストールします。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」の場合を記載しています。コンテナベースイメージがUBI 8の場合は、curl-minimalをcurlに変更してください。
-
他社製のJava VMを指定します。この例では、Java SE 21準拠のJDKとして「OpenJDK 21」を使用しています。環境変数PATHの先頭に、他社製のJava VMのコマンド群がインストールされているディレクトリを追加します。
-
uCosminexus Application Runtime for Spring Bootの前提RPMパッケージをインストールします。uCosminexus Application Runtime for Spring Bootのリリースノートを参照し、uCosminexus Application Runtime for Spring Bootに必要な前提RPMパッケージを記述してください。
-
このオレンジ色の背景で示す行は、Red Hat OpenShift Container Platformを使用し、SCC(Security Context Constraints)の設定でコンテナ実行時にrootユーザでの実行を許容しない場合に記述してください。uCARSのインストールディレクトリ配下の所有グループを実行ユーザが属するグループに変更してください。
-
任意のコンテナ実行ユーザ・グループを指定します。
-
アプリケーション配置用ディレクトリを作成します。
- ヒント
-
Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定
Red Hat OpenShift Container Platformには、SCC(Security Context Constraints)と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID(非root)とGID「0」(root)でコンテナを実行します。
このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」(root)を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。
(2) Containerfileと資材の配置
次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。
|
ファイル/ディレクトリ構成 |
作成・提供元 |
備考 |
|
|---|---|---|---|
|
<コンテナイメージビルド作業ディレクトリ>/ |
ユーザ |
− |
|
|
Containerfile |
ユーザ |
− |
|
|
X64LIN (uCosminexus Application Runtime for Spring Bootのインストーラ) |
日立 |
uCosminexus Application Runtime for Spring BootのインストールCD-ROMに格納されているX64LINディレクトリをコピーしてください。 |
|
|
PACK_TAR.Z (uCosminexus Application Runtime for Spring Bootの修正パッチ) |
日立 |
uCosminexus Application Runtime for Spring Bootの修正パッチを適用する場合だけ格納してください。 |
|
|
DigiCertGlobalRootG2.crt (DigiCertGlobalRootG2 CA証明書) |
ユーザ |
分散トレース収集サービスにAzure Monitor Application Insightsを使用する場合だけ格納してください。 |
|
|
GTS Root R1.pem GTS Root R2.pem GTS Root R3.pem GTS Root R4.pem (GTS Root R1、GTS Root R2、GTS Root R3、GTS Root R4証明書) |
ユーザ |
分散トレース収集サービスにGoogle Cloud PlatformのCloud Traceを使用する場合だけ格納してください。 |
|
(凡例)−:該当しません。
(3) コンテナイメージのビルド
Containerfileを使用して、コンテナイメージをビルドします。
uCosminexus Application Runtime for Spring Bootコンテナベースイメージのビルドのコマンドを次に示します。
cd <コンテナイメージビルド作業ディレクトリ>/ docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]ucars:<uCosminexus Application Runtime for Spring Bootバージョン>△.
(凡例)△:半角スペース1文字
<実行例>
cd build/ docker build -f ./Containerfile -t myregistry.example.com/myproject/ucars:01-12-01 .
この例では、uCosminexus Application Runtime for Spring Bootのバージョンを「01-12-01」としています。
(4) コンテナイメージの登録
ビルドしたuCosminexus Application Runtime for Spring Bootコンテナベースイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。
インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。