1. WebOTX Application Server のコンテナイメージ

1.1. コンテナイメージの生成(フルプロファイル, Linux)

Linux環境でWebOTX Application Server Express (フルプロファイル)またはWebOTX Application Server Standardのコンテナイメージを生成する手順を説明します。

1.1.1. 事前準備

コンテナイメージを作成するには、事前にコンテナエンジン (Docker または Podman)のインストールが必要です。インストール方法および環境設定方法はOSおよびコンテナエンジンのドキュメントを参照してください。

また、移行機能で作成したファイルを展開するためにunzipコマンドを使用します。移行機能を使用してコンテナイメージを生成する場合、事前にunzipコマンドをインストールしておく必要があります。

1.1.2. ファイルの準備とコンテナイメージの生成

コンテナイメージの生成に必要なファイルを準備するには、WebOTXのインストールメディアに格納されているコンテナイメージ生成用ファイル準備スクリプトを使用します。 このスクリプトでは、ファイルの準備だけでなくコンテナイメージの生成まで行うことができます。

手順を以下で説明します。

  1. ログイン名 root でログインします。
    login: root
    
  2. マシンのDVD-ROMドライブにLinux版の「WebOTX Media (DVD)」を挿入してマウントします。
    root> cd /
    root> mount -t iso9660 /dev/cdrom /media/cdrom
    
  3. コンテナイメージ生成用ファイル準備スクリプトを実行してください。
    root> /media/cdrom/OTXCNT/LINUX/prepare-to-build-image.sh
    

    移行機能を利用してコンテナイメージを生成する場合は、移行機能で作成されたzipファイルをスクリプトの引数に指定してください。
    移行機能で作成されたzipファイルがネストしている場合は、先にunzipコマンドで展開して、内部のzipファイルを引数に指定してください。

    root> /media/cdrom/OTXCNT/LINUX/prepare-to-build-image.sh <zipファイル>
    

    引数に移行機能で作成されたzipファイルを指定した場合は、はじめにzipファイルを解析して取得した移行先環境情報が表示されます。

    Parsing <zipファイル> ...
    Product Name : WebOTX Application Server <エディション> for Container
    User Domain Name : <ドメイン名>
    Web Server : <Webサーバの種類>
    Domain Administration User Name : <ドメインの運用管理ユーザ名>
    Domain Administration Port : <ドメインの運用管理ポート番号>
    
  4. コンテナイメージの生成に必要なファイルを準備するディレクトリを入力します。

    新規に作成するため、存在しないディレクトリを指定してください。

    Please enter a directory path to use as an output directory.
    (Please enter a non-existing path. It will be created after.)
    
  5. 生成するイメージのベースイメージを選択します。

    使用するベースイメージを番号で選択してください。その他のイメージを使用する場合は「6」を選択してください。
    なお、Red Hat Enterprise Linux 7のイメージは配布に制限があります。また、Red Hat Universal Base Imageを使用する場合も、Red Hat Enterprise Linuxのyumリポジトリを使用すると、配布が制限される場合があります。

    Please select a base image. (Default: 1)
      1. Red Hat Universal Base Image 7
         (registry.access.redhat.com/ubi7/ubi)
      2. Red Hat Universal Base Image 7 (Minimal)
         (registry.access.redhat.com/ubi7/ubi-minimal)
      3. Red Hat Enterprise Linux 7 Image
         (registry.access.redhat.com/rhel7)
      4. Red Hat Universal Base Image 8
         (registry.access.redhat.com/ubi8/ubi)
      5. Red Hat Universal Base Image 8 (Minimal)
         (registry.access.redhat.com/ubi8/ubi-minimal)
      6. Other image
    

    「6」を選択した場合、ベースイメージ名を入力します。

    Please enter a base image name.
    

    続いて、パッケージマネージャのコマンドを入力します。指定したベースイメージで使用可能なコマンドを入力してください。既定値は指定したベースイメージ名に合わせて変わります。

    Please enter a package manager name. (Default: yum)
    

    さらに、パッケージマネージャのコマンドオプションを入力します。指定したパッケージマネージャで使用可能なコマンドオプションを入力してください。既定値は指定したベースイメージ名に合わせて変わります。既定値が「<none>」でない場合、「<none>」と入力することでコマンドオプションなしになります。

    Please enter package management command options.
    (Default: --disableplugin=subscription-manager --disablerepo=* --enablerepo=ubi-7 --enablerepo=ubi-7-server-extras-rpms --enablerepo=ubi-7-server-optional-rpms)
    If you enter "<none>", it means no options.
    
  6. JDKを選択します。

    [手順5でRed Hat 7を選択した場合]
    使用するJDKを番号で選択してください。その他のJDKを使用する場合は「3」を選択してください。
    移行機能を利用してコンテナイメージを生成する場合、既定値は指定したzipファイル内の移行先環境情報に合わせて変わります。

    Please select a JDK. (Default: 1)
      1. Red Hat OpenJDK 8
      2. Red Hat OpenJDK 11
      3. Other JDK
    

    「3」を選択した場合、JDKのインストーラ(tar.gz)ファイルを入力します。既定値はメディアに含まれるインストーラです。

    Please enter a JDK installer file (*.tar.gz) path.
    (Default: /media/cdrom/JDK/LINUX/jdk-17_linux-x64_bin.tar.gz)
    

    [手順5でRed Hat 8を選択した場合]
    使用するJDKを番号で選択してください。その他のJDKを使用する場合は「4」を選択してください。
    移行機能を利用してコンテナイメージを生成する場合、既定値は指定したzipファイル内の移行先環境情報に合わせて変わります。

    Please select a JDK. (Default: 1)
    1. Red Hat OpenJDK 8
    2. Red Hat OpenJDK 11
    3. Red Hat OpenJDK 17
    4. Other JDK
    

    「4」を選択した場合、JDKのインストーラ(tar.gz)ファイルを入力します。既定値はメディアに含まれるインストーラです。

    Please enter a JDK installer file (*.tar.gz) path.
    (Default: /media/cdrom/JDK/LINUX/jdk-17_linux-x64_bin.tar.gz)
    
  7. WebOTX Application Serverのエディションを選択します。

    WebOTX Application Server Express for Containerの場合は「1」を、WebOTX Application Server Standard for Containerの場合は「2」を選択してください。
    移行機能を利用してコンテナイメージを生成する場合は、指定したzipファイル内の移行先環境情報でエディションが決まるため、この選択肢はスキップされます。

    Please select one of the following WebOTX products.
      1. WebOTX Application Server Express for Container
      2. WebOTX Application Server Standard for Container
    
  8. 製品の「ライセンスキー」を入力します。

    ライセンスキーは製品に添付される「ソフトウェア使用認定証」の「製品番号」に記載されている19桁の番号です。

    Please enter a license key of WebOTX Application Server <エディション>
    for Container.
    

    Caution
    入力する「ライセンスキー」は1つですが、コンテナに割り当てるコア数に応じた数の WebOTX Application Server <エディション> Processor License for Container を購入していただく必要があります。

  9. Webサーバを選択します。

    WebOTX Webサーバを(Apache HTTP Server 2.4.xxベース)を使用する場合は「1」を、WebOTX内蔵型のJavaベースのWebサーバを使用する場合は「2」を選択してください。既定値はWebOTX Application Server Express for Containerの場合は「2」、WebOTX Application Server Standard for Containerの場合は「1」です。
    移行機能を利用してコンテナイメージを生成する場合は、指定したzipファイル内の移行先環境情報でWebサーバが決まるため、この選択肢はスキップされます。

    Please select one of the following Web Server. (Default: 1)
      1. WebOTX Web Server 2.4
      2. Internal Java based Web Server
    
  10. パッチ適用有無を選択します。

    コンテナイメージ生成時にWebOTX Application Serverのパッチを適用する場合は「y」を、パッチを適用しない場合は「n」を選択してください。

    Would you like to apply a patch of WebOTX Application Server <エディション>
    during installation? [y,n] (Default: n)
    

    「y」を選択した場合、事前に対象マシンにダウンロードしたWebOTX Application Serverのパッチへのパスを入力してください。

    Please enter a patch file (*.tar.gz) path of WebOTX Application Server
    <エディション>.
    

    Caution
    パッチの入手にはWebOTXの保守契約が必要です。

    Caution
    パッチは指定したエディションに適用可能なものを選択してください。

  11. WebOTX運用管理ユーザを選択します。

    WebOTX運用管理ユーザをroot以外に設定する場合は「y」を、rootに設定する場合は「n」を選択してください。

    Would you like to configure a non-root user as WebOTX Operation User? [y,n]
    (Default: y)
    

    「y」を選択した場合、WebOTX運用管理ユーザはユーザ名asadm (ユーザID 10001)、グループはroot (グループID 0)になります。
    また、運用管理ユーザがroot以外の場合、OSの制約上ポート番号として1024未満の番号を利用できません。移行機能を利用しないでコンテナイメージを生成する場合は、HTTPのポート番号として8080が、HTTPSのポート番号として8443が使用されます。移行機能を利用する場合、ポート番号に1024未満を使用していないことを確認してください。

  12. ユーザドメイン名を入力します。

    ユーザドメイン名は半角英数字と、ハイフン(-)、アンダーバー(_)を32文字以内で入力してください。また、「admin」は予約語であるため、ユーザドメイン名として指定することができません。
    移行機能を利用してコンテナイメージを生成する場合は、指定したzipファイル内の移行先環境情報でドメイン名が決まるため、この入力はスキップされます。

    Please enter a name of a user domain. (Default: domain1)
    
  13. 全ての選択が完了するとコンテナイメージ生成用ファイルの準備開始確認が表示されます。

    コンテナイメージ生成用ファイルの準備を開始するには「y」を入力してください。キャンセルするには「q」を入力してください。キャンセルした場合、コンテナイメージ生成用ファイル準備スクリプトは終了します。再実行する場合は手順(3)のコンテナイメージ生成用ファイル準備スクリプトの実行からやり直してください。

    A build context will be created in the specified output directory
    with the following settings.
      Output Directory : ./build
      Base Image : Red Hat Universal Base Image 7
                   (registry.access.redhat.com/ubi7/ubi)
        package manager : yum (--disableplugin=subscription-manager --disablerepo=* --enablerepo=ubi-7 --enablerepo=ubi-7-server-extras-rpms --enablerepo=ubi-7-server-optional-rpms)
      JDK : Red Hat OpenJDK 8
      Product Name : WebOTX Application Server Express for Container
      License Key : 1234567890ABCDEF
      Web Server : Internal Java based Web Server
      Apply Patch File : none
      WebOTX Operation User : non-root
      User Domain Name : domain1
    
    ************************************************************************
    * Preparation to build image in the output directory.                  *
    * To continue, enter y.                                                *
    * Enter q to exit the preparation. [y, q] (Default: y)                 *
    ************************************************************************
    

    移行機能を利用してコンテナイメージを生成する場合は、引数に指定したファイル、ドメインの運用管理ユーザ名、運用管理ポートの情報も表示されます。

    A build context will be created in the specified output directory
    with the following settings.
      Output Directory : ./build
      Migration Config : ./webotx_migration_configs_19010100.zip
      Base Image : Red Hat Universal Base Image 7
                   (registry.access.redhat.com/ubi7/ubi)
        package manager : yum (--disableplugin=subscription-manager --disablerepo=* --enablerepo=ubi-7 --enablerepo=ubi-7-server-extras-rpms --enablerepo=ubi-7-server-optional-rpms)
      JDK : Red Hat OpenJDK 8
      Product Name : WebOTX Application Server Express for Container
      License Key : 1234567890ABCDEF
      Web Server : Internal Java based Web Server
      Apply Patch File : none
      WebOTX Operation User : non-root
      User Domain Name : domain1
      Domain Administration User Name : admin
      Domain Administration Port : 6212
    
    ************************************************************************
    * Preparation to build image in the output directory.                  *
    * To continue, enter y.                                                *
    * Enter q to exit the preparation. [y, q] (Default: y)                 *
    ************************************************************************
    
  14. コンテナイメージ生成用ファイルの準備が実行されます。

    以下のメッセージが表示されたら準備完了です。

    Preparation of image build context is successful.
    
  15. コンテナイメージ生成用ファイルの準備が完了すると、追加構成の方法とコンテナイメージ生成方法の説明が表示されます。

    複数ページにわたって表示されるため、ページを進めるにはスペースキーを押下してください。

  16. コンテナイメージ生成方法の表示の後、コンテナイメージ生成開始確認が表示されます。

    コンテナイメージの生成を開始するには「y」を入力してください。キャンセルするには「q」を入力してください。キャンセルした場合、コンテナイメージ生成用ファイル準備スクリプトは終了します。

    ************************************************************************
    * Building an image using the output directory as build context.       *
    * To continue, enter y.                                                *
    * Enter q to exit the image building. [y, q] (Default: y)              *
    ************************************************************************
    

    キャンセル後にコンテナイメージを生成する方法は [ スクリプトで作成されたファイルを利用したコンテナイメージの生成 ] を参照してください。

    追加構成や追加のライセンス登録を行う場合は、「q」を入力してコンテナイメージの生成をキャンセルし、手順(4)で指定したディレクトリに生成されたファイルを編集してから、[ スクリプトで作成されたファイルを利用したコンテナイメージの生成 ] に記載の方法でコンテナイメージを生成してください。
    追加構成および追加のライセンス登録の方法は [ 追加構成 ] および [ 追加ライセンス登録 ] を参照してください。

  17. コンテナイメージ生成前にイメージ生成環境の準備できているか確認します。
    Validating environment for building image...
    

    イメージ生成環境の確認を別途実施するには、以下のスクリプトを実行してください。

    root> /media/cdrom/OTXCNT/LINUX/validate-image-build-environment.sh
    

    イメージ生成環境が正しく準備できている場合は、以下のメッセージが表示されます。

    Validation is successful.
    

    イメージ生成環境が正しく準備できていない場合は、以下のメッセージが表示されスクリプトが終了します。一緒に表示されるエラーメッセージの内容を確認して、コンテナエンジン等のイメージ生成環境を構築した後に [ スクリプトで作成されたファイルを利用したコンテナイメージの生成 ] に記載の方法でコンテナイメージを生成してください。

    Validation failed.
    
  18. 生成するコンテナイメージの名前を入力します。イメージ名はコンテナイメージ名の規約に従ってください。

    Please enter a name of the build image. (Default: no name)
    
  19. Dockerデーモンにプロキシ設定をしている場合、コンテナイメージ生成時にも同じプロキシ設定を使用するか選択します。

    Dockerデーモンと同じプロキシ設定を使用する場合は「y」を、プロキシ設定を使用しない場合は「n」を選択してください。Dockerデーモンにプロキシ設定をしていない場合は、この選択肢はスキップされます。
    「y」を入力した場合、プロキシ設定はdocker buildコマンドの--build-argオプションを使用して指定されます。

    Would you like to use the same proxy configuration as the Docker daemon when
    building the image? [y/n] (Default: y)
      Http Proxy: <httpプロキシ>
      Https Proxy: <httpsプロキシ>
      No Proxy: <プロキシ除外設定>
    

    上記の「<httpプロキシ>」「<httpsプロキシ>」「<プロキシ除外設定>」はDockerデーモンに設定したプロキシ設定が表示されます。設定されていない項目は「<none>」と表示されます。

    Caution
    RHEL 7 で提供される Docker 1.13 では--build-argオプションで指定したプロキシ設定の情報が中間イメージに残る点に注意してください。
    [ 注意制限事項 > 機能ごとの注意制限事項 > Docker > 注意事項 > イメージ生成時のプロキシ設定が中間イメージに残る ]

    Podmanの場合は、スクリプトを実行した環境の環境変数http_proxy, https_proxy, no_proxyが引き継がれるため、この選択肢はスキップされます。

  20. コンテナイメージの生成が実行されます。

    以下のメッセージが表示されたら生成完了です。コンテナイメージ生成用ファイル準備スクリプトはここで終了します。

    Building an image is successful.
    
  21. コンテナイメージが生成されていることを確認します。

    以下のコマンドを実行します。
    (Podmanを使用する場合は、dockerコマンドをpodmanコマンドに読み替えてください)

    root> docker images
    REPOSITORY                           TAG           IMAGE ID      CREATED
    <イメージ名>                         <タグ>        ************  ** **** ago
    registry.access.redhat.com/ubi7/ubi  latest        ************  ** **** ago
    

    (*) *** 部分の表記は環境によって異なります。

    生成時に指定した名前のイメージが表示されれば、生成完了です。

1.1.3. 追加構成

WebOTX Application Serverのコンテナイメージを生成する際に追加の構成を行う方法を説明します。

追加の構成を行うには、[ ファイルの準備とコンテナイメージの生成 ] の手順(4)で指定したディレクトリに作成されたadditional-configディレクトリの以下のスクリプトを編集してください。

スクリプトファイル名 実行タイミング
pre-start-domain.sh コンテナイメージ生成中のドメイン起動前
post-start-domain.sh コンテナイメージ生成中のドメイン起動後
post-stop-domain.sh コンテナイメージ生成中のドメイン停止後

スクリプト内では、以下の環境変数が利用可能です。

環境変数名 説明
AS_INSTALL WebOTX Application Serverインストールディレクトリ
「/opt/WebOTX」固定
AS_JAVA JDKのホームディレクトリ
INSTANCE_ROOT ユーザドメインのディレクトリ
「/opt/WebOTX/domains/<ドメイン名>」
DOMAIN_NAME ユーザドメイン名
ADDITIONAL_CONFIG additional-configディレクトリのコンテナ内でのパス
このディレクトリはイメージ生成の中で削除されます

スクリプトから使用するファイルは、additional-configディレクトリに配置して、ADDITIONAL_CONFIG環境変数を使用してアクセスしてください。 additional-configディレクトリ内のファイル ($ADDITIONAL_CONFIG ディレクトリにコピーされたファイル) はスクリプト実行後に削除されます。最終イメージでも使用するファイルはスクリプト内で別のディレクトリにコピーする必要があります。

Caution
各スクリプトの内容およびadditional-configディレクトリの内容が中間イメージに残る点に注意してください。
[ 注意制限事項 > 機能ごとの注意制限事項 > Docker > 注意事項 > 追加構成に使用したファイルが中間イメージに残る ]

Caution
追加の構成を行う際、自身のホスト名を指定する場合は「localhost」を使用することで、コンテナ起動時にコンテナのホスト名に自動的に置き換わります。
[ 注意制限事項 > 機能ごとの注意制限事項 > Docker > 注意事項 > 自身のホスト名を指定する場合は「localhost」を使用する必要がある ]

1.1.3.1. 追加構成の実施例

追加構成を行うためのスクリプトの例を記載します。この例では、以下の構成を行います。

additional-config/pre-start-domain.sh に以下の内容を追記します。

# copy library
cp "$ADDITIONAL_CONFIG/derbyclient.jar" "$INSTANCE_ROOT/lib/"

# add permission in server.policy
cat << 'EOF' >> "$INSTANCE_ROOT/config/server.policy"
// for jdbc driver
grant codeBase "file:${com.nec.webotx.instanceRoot}/lib/derbyclient.jar" {
    permission java.security.AllPermission;
};

additional-config/post-start-domain.sh に以下の内容を追記します。

# set value
"$AS_INSTALL/bin/otxadmin" set --user admin --password adminadmin server.microprofile.microprofile-health.enabled=true
"$AS_INSTALL/bin/otxadmin" set --user admin --password adminadmin server.microprofile.microprofile-metrics.enabled=true

# create resource
"$AS_INSTALL/bin/otxadmin" create-jdbc-datasource --user admin --password adminadmin --dataSourceType JDBCEX_Derby --jdbcMajorVersion 4 --jdbcUserName APP --jdbcPassword APP --serverName hostname --portNumber 1527 --dataSourceName sample-db jdbc/sample

# deploy application
"$AS_INSTALL/bin/otxadmin" deploy --user admin --password adminadmin "$ADDITIONAL_CONFIG/hello.war"

スクリプト内で使用するファイル derbyclient.jar と hello.war はadditional-configディレクトリに配置します。

addtional-configディレクトリ内のスクリプトの変更およびファイルの配置後に、[ スクリプトで作成されたファイルを利用したコンテナイメージの生成 ] に記載の方法でコンテナイメージを生成することで、追加構成を実施したコンテナイメージが生成されます。

1.1.3.2. コンテナ起動時の追加構成

コンテナイメージ生成時ではなくコンテナ起動時に毎回実行する処理は、[ ファイルの準備とコンテナイメージの生成 ] の手順(4)で指定したディレクトリに作成されたscripts/preprocess.dディレクトリに実行可能ファイルを配置してください。ここに配置した実行可能ファイルはコンテナ内でのドメイン起動前に実行されます。この実行可能ファイルでは、以下の環境変数が利用可能です。

環境変数名 説明
AS_INSTALL WebOTX Application Serverインストールディレクトリ
「/opt/WebOTX」固定
AS_JAVA JDKのホームディレクトリ
INSTANCE_ROOT ユーザドメインのディレクトリ
「/opt/WebOTX/domains/<ドメイン名>」
DOMAIN_NAME ユーザドメイン名

1.1.4. 追加ライセンス登録

WebOTX Application Serverのコンテナイメージを生成する際に追加のライセンス登録を行う方法を説明します。

追加のライセンスを登録するには、[ ファイルの準備とコンテナイメージの生成 ] の手順(4)で指定したディレクトリに作成されたテキストファイルadditional-license.txtにライセンスキーを記入してください。ライセンスキーは1行に1つずつ記入してください。

additional-license.txt記入後に、[ スクリプトで作成されたファイルを利用したコンテナイメージの生成 ] に記載の方法でコンテナイメージを生成することで、追加構成を実施したコンテナイメージが生成されます。

1.1.5. スクリプトで作成されたファイルを利用したコンテナイメージの生成

コンテナイメージ生成用ファイル準備スクリプト (prepare-to-build-image.sh)で作成されたファイルを利用して、コンテナイメージを生成する方法を説明します。

追加構成や追加ライセンス登録のために [ ファイルの準備とコンテナイメージの生成 ] の手順(16)で「q」を入力してコンテナイメージの生成をキャンセルした場合や、コンテナイメージを再生成する場合、Docker, Podmanをインストールしていない環境でコンテナイメージ生成用ファイル準備スクリプトを実行してファイルを準備し、Docker, Podmanをインストールした環境に持って行ってコンテナイメージを生成する場合に実施します。 スクリプトの延長でコンテナイメージを生成する場合は、[ ファイルの準備とコンテナイメージの生成 ] の手順(16)で「y」を入力してください。

コンテナイメージを生成するには以下のコマンドを実行してください。イメージ名を指定する場合はコンテナイメージ名の規約に従ってください。 Dockerfileがあるディレクトリとは、[ ファイルの準備とコンテナイメージの生成 ] の手順(4)で指定したディレクトリです。

1.1.6. 生成済みのWebOTX Application Serverのコンテナイメージに対する追加構成

WebOTX Application Serverのコンテナイメージを生成した後、そのコンテナイメージに対して追加の構成を行う方法を説明します。

生成済みのコンテナイメージに対して追加の構成を行うには、任意の新規ディレクトリにDockerfileを作成して、FROM命令で指定するベースイメージに生成済みのWebOTX Application Serverのコンテナイメージ名を指定します。
さらに、DockerfileでADD, COPY, RUN等の命令を用いて追加構成を行います。 コンテナイメージ生成時の追加構成と異なり、WebOTXのインストールディレクトリなどを指す環境変数は利用できません。

Caution
Dockerfileの内容およびCOPYまたはADDでコピーしたファイルが中間イメージに残る点に注意してください。
[ 注意制限事項 > 機能ごとの注意制限事項 > Docker > 注意事項 > 追加構成に使用したファイルが中間イメージに残る ]

Caution
追加の構成を行う際、自身のホスト名を指定する場合は「localhost」を使用することで、コンテナ起動時にコンテナのホスト名に自動的に置き換わります。
[ 注意制限事項 > 機能ごとの注意制限事項 > Docker > 注意事項 > 自身のホスト名を指定する場合は「localhost」を使用する必要がある ]

1.1.6.1. 追加構成の実施例

生成済みのWebOTX Application Serverのコンテナイメージに対して追加構成を行う例を記載します。

この例でベースイメージとして使用するWebOTX Application Serverのコンテナイメージは以下のように構成されています。

この例では、以下の構成を行います。

以下の内容の Dockerfile を作成します。

FROM <生成済みのWebOTX Application Serverのコンテナイメージ名>

USER 0

# Configuration
COPY derbyclient.jar /opt/WebOTX/domains/domain1/lib/
COPY hello.war /tmp/
RUN chown 10001:0 /opt/WebOTX/domains/domain1/lib/derbyclient.jar /tmp/hello.war
USER 10001
RUN echo '// for jdbc driver'                                                         >> /opt/WebOTX/domains/domain1/config/server.policy && \
    echo 'grant codeBase "file:${com.nec.webotx.instanceRoot}/lib/derbyclient.jar" {' >> /opt/WebOTX/domains/domain1/config/server.policy && \
    echo '    permission java.security.AllPermission;'                                >> /opt/WebOTX/domains/domain1/config/server.policy && \
    echo '};'                                                                         >> /opt/WebOTX/domains/domain1/config/server.policy && \
    /opt/WebOTX/bin/docker/start-domain-for-config.sh && \
    sleep 20 && \
    /opt/WebOTX/bin/otxadmin set --user admin --password adminadmin server.microprofile.microprofile-health.enabled=true && \
    /opt/WebOTX/bin/otxadmin set --user admin --password adminadmin server.microprofile.microprofile-metrics.enabled=true && \
    /opt/WebOTX/bin/otxadmin create-jdbc-datasource --user admin --password adminadmin --dataSourceType JDBCEX_Derby --jdbcMajorVersion 4 --jdbcUserName APP --jdbcPassword APP --serverName hostname --portNumber 1527 --dataSourceName sample-db jdbc/sample && \
    /opt/WebOTX/bin/otxadmin deploy --user admin --password adminadmin /tmp/hello.war && \
    /opt/WebOTX/bin/docker/stop-domain-for-config.sh && \
    rm -rf /opt/WebOTX/domains/domain1/backup && \
    rm -rf /opt/WebOTX/domains/domain1/osgi-cache && \
    rm -f /opt/WebOTX/domains/domain1/config/ObjectBroker/namesv.ndf && \
    rm -f /tmp/hello.war

Dockerfile内で使用するファイル derbyclient.jar と hello.war はDockerfileと同じディレクトリに配置します。

DockerfileおよびDockerfile内で使用するファイルの準備後に、[ スクリプトで作成されたファイルを利用したコンテナイメージの生成 ] に記載の方法でコンテナイメージを生成することで、追加構成を実施したコンテナイメージが生成されます。
その際、docker build/podman buildコマンドに指定するDockerfileがあるディレクトリとは、[ ファイルの準備とコンテナイメージの生成 ] の手順(4)で指定したディレクトリではなく、追加構成のために新規に作成したDockerfileがあるディレクトリを指定します。

1.1.6.2. パッチ適用の実施例

生成済みのWebOTX Application Serverのコンテナイメージに対してパッチを適用する例を記載します。

Caution
パッチ適用は生成済みのWebOTX Application Serverのコンテナイメージに対してではなく、WebOTX Application Serverのコンテナイメージを生成する際に実施することを推奨します。 WebOTX Application Serverのコンテナイメージを生成する際にパッチを適用するには、[ ファイルの準備とコンテナイメージの生成 ] の手順(10)で「y」を入力し、続いてパッチファイルのパスを入力します。

この例でベースイメージとして使用するWebOTX Application Serverのコンテナイメージは以下のように構成されています。

この例では、以下の処理を行います。

  1. パッチ適用スクリプトでsuコマンドを使うため、util-linuxパッケージをインストール (Red Hat Universal Base Image 8 (Minimal)の場合のみ必要)
  2. WebOTX Application Serverのパッチファイルをコンテナ内の一時ディレクトリに展開
  3. WebOTX Application Serverのパッチを適用

以下の内容の Dockerfile を作成します。

FROM <生成済みのWebOTX Application Serverのコンテナイメージ名>

USER 0

# Install util-linux for su command used during applying patch
# (Uncomment this RUN instruction only if using ubi8-minimal)
#RUN microdnf -y install util-linux && \
#    microdnf clean all && \
#    rm -rf /var/cache/yum/*

# Apply Patch
ADD ["<パッチファイル(.tar.gz)名>", "/tmp/build-tmp/patch"]
RUN usermod -s /bin/bash asadm && \
    echo -e 'y\nasadm\nroot\ny' | /tmp/build-tmp/patch/bin/wo_patch_as.sh && \
    rm -rf /tmp/build-tmp && \
    usermod -s /sbin/nologin asadm

USER 10001

Dockerfile内で使用するWebOTX Application ServerのパッチファイルはDockerfileと同じディレクトリに配置します。
パッチのreadmeで適用後の作業指示がある場合は、指示された内容をDockerfileのRUN命令で実行します。

DockerfileおよびWebOTX Application Serverのパッチファイルの準備後に、[ スクリプトで作成されたファイルを利用したコンテナイメージの生成 ] に記載の方法でコンテナイメージを生成することで、パッチ適用されたコンテナイメージが生成されます。
その際、docker build/podman buildコマンドに指定するDockerfileがあるディレクトリとは、[ ファイルの準備とコンテナイメージの生成 ] の手順(4)で指定したディレクトリではなく、パッチ適用のために新規に作成したDockerfileがあるディレクトリを指定します。

1.2. コンテナイメージの生成(マイクロサービスプロファイル, Linux)

Linux環境でWebOTX Application Server Express (マイクロサービスプロファイル)のコンテナイメージを生成する手順を説明します。

1.2.1. マイクロサービスパッケージの作成

マイクロサービスパッケージを作成する方法は [ アプリケーション開発 > その他のアプリケーション > マイクロサービスプロファイルを使用したWebOTX Uber JARの作成 ] を参照してください。

1.2.2. コンテナイメージの作成

コンテナエンジンに Docker を使用する場合のコンテナイメージの作成ついて説明します。 コンテナエンジンに Podman を使用する場合は、docker コマンドを podman コマンドに読み替えてください。 詳細については、使用するコンテナエンジン、コンテナオーケストレーションツールのドキュメントを参照してください。

コンテナイメージの作成は次のとおりの手順で行ないます。

  1. マイクロサービスパッケージ(webotx-ms-package)をファイル転送ツールやコマンドを使用して、対象となるLinux環境の任意のフォルダに転送します。
  2. ホストOSにログイン名 root でログインします。
    $ login: root
  3. ファイル転送を行った任意のフォルダにCDコマンドで移動します。
    # cd <任意のフォルダ>/webotx-ms-package
  4. Dockerのコンテナイメージを作成します。以下のコマンドを実行します。
    イメージ名を指定する場合はDockerの規約に従ってください。 必要であればbuildコマンドの--build-argオプションでhttp_proxy、https_proxy、no_proxyにコンテナイメージ生成時に使用するプロキシサーバの情報を指定してください。
    # docker build -t <イメージ名> .
  5. コンテナイメージが生成されていることを確認します。 以下のコマンドを実行します。
    # docker images
    REPOSITORY TAG IMAGE ID CREATED
    <イメージ名> <タグ> ************ ** **** ago
    registry.access.redhat.com/rhel latest ************ ** **** ago
    (*) *** 部分の表記は環境によって異なります。

    生成時に指定した名前のイメージが表示されれば、生成完了です。

1.2.3. 動作確認

動作確認は次のとおりの手順で行ないます。

  1. ホストOSにログイン名 root でログインします。
    $ login: root
  2. コンテナを起動します。コンテナの環境変数OTX_LICENSEで製品の「ライセンスキー」を指定します。 また、コンテナ起動時にホスト8080番ポートへの通信をコンテナ8080番ポート(既定値)へ転送します。 以下のコマンドを実行します。
    # docker run -it -d -e OTX_LICENSE=<ライセンスキー> -p 8080:8080 <イメージ名>

    Caution
    指定する「ライセンスキー」は事前に購入していただく必要があります。

    Caution
    「8080番ポート」はホスト上で使用していないポート番号を指定してください。
    ポート番号が競合していないことを確認するには、以下のコマンドで確認できます。

    # ss -ant | grep 8080
  3. 以下のコマンドを実行して、コンテナが起動していることを確認します。
    # docker ps
    CONTAINER ID IMAGE COMMAND CREATED
    537d3c548628 <イメージ名> "java -jar ・・・" 2 minutes ago
    
  4. サンプルアプリを利用して、コンテナで動作しているWebOTX Uber JARへ接続確認します。Webブラウザを起動し、次のURLを入力してください。
    http://[ホストOSのIPアドレス]:8080/{artifactId}-{version}/parameter/query?param=query
    Webブラウザ上に「query」の表示が確認できれば、正常に動作しています。

1.3. コンテナイメージの生成(フルプロファイル, Windows)

Windows環境でWebOTX Application Server Express (フルプロファイル)のコンテナイメージを生成する手順を説明します。

Caution
Windows環境ではWebOTX Application Server Express (マイクロサービスプロファイル)とWebOTX Application Server Standardのコンテナイメージ生成をサポートしていません。

1.3.1. ファイルの準備とコンテナイメージの生成

コンテナイメージを生成するには、WebOTXのインストールメディアに格納されているDockerfile、WebOTXインストーラ、JDKインストーラ、起動スクリプトファイルを作業フォルダに準備し、docker image buildコマンドを実行します。

手順を以下で説明します。

  1. DVD-ROM の挿入

    WebOTXメディアのDVD-ROM媒体を DVD-ROM ドライブに挿入してください。インストーラのランチャー画面が表示された場合は、[OK]ボタンを押して閉じてください。

  2. インストーラのコピー

    以下に示すファイルおよびフォルダを任意のフォルダにコピーしてください。

    <ドライブ>は、DVD-ROM ドライブのドライブ文字です。

    コピー先のフォルダを<作業フォルダ>として、以下の構成となるようにコピーしてください。

    [Windows Server 2022 の場合]
    テキストファイル<作業フォルダ>\Dockerfile の初めにある以下の行の「ltsc2019」を「ltsc2022」に変更してください。

    FROM mcr.microsoft.com/windows/servercore:ltsc2019
    

    [Oracle JDK 11、Oracle JDK 17 を使用する場合]
    Oracle JDK 11、Oracle JDK 17 を使用する場合は、テキストファイル<作業フォルダ>\Dockerfile の「# install JDK」にあるRUNの行から「ADDLOCAL="ToolsFeature,SourceFeature"」を削除してください。
    なお、メディアにバンドルしているのはOracle JDK 17のため、こちらを使用する場合は本手順が必要です。

    RUN C:\temp\jdk-installer.exe /s
    

    [メディアにバンドルしていない Oracle の JDK を使用する場合]
    メディアにバンドルしていないOracleのJDKを使用する場合は、JDKのインストーラ(exe)ファイルを用意し、<作業フォルダ>にコピーします。
    さらに、テキストファイル<作業フォルダ>\Dockerfile の「# install JDK」の次の行にある COPY の「jdk-*.exe」を用意した JDK のインストーラ(exe)ファイル名にマッチするように編集します。

    [OpenJDK を使用する場合]
    OpenJDKを使用する場合は、OpenJDKのインストーラ(zip)ファイルを用意し、<作業フォルダ>にコピーします。
    さらに、テキストファイル<作業フォルダ>\Dockerfile の「# install JDK」の次にある 2 行(COPY と RUN の行)を削除し、そこに以下の 2 行を挿入します。

    COPY <OpenJDK のインストーラ(zip)ファイル名> C:/temp/openjdk.zip
    RUN powershell.exe -Command Expand-Archive -Path C:\temp\openjdk.zip -DestinationPath 'C:\Program Files\Java'
    

    ※ <OpenJDKのインストーラ(zip)ファイル名>には、用意したOpenJDKのインストーラ(zip)ファイルの名前を記載します。

    次に、テキストファイル<作業フォルダ>\Dockerfile の「# install WebOTX AS Express」にある「$jdkRegistryPath = 〜 ; \」の行から「$javaHome = 〜 ; \」の行までの 4 行を削除し、そこに以下の 1 行を挿入します。

    $javaHome = Get-ChildItem 'C:\Program Files\Java' ^| Select-Object -First 1 ^| % { $_.FullName } ; \
    
  3. ライセンスキーの入力

    製品に添付されている 「ソフトウェア使用認定証」の「製品番号」に記載されている19桁の番号をテキストファイル<作業フォルダ>\license.txtに記入します。コンテナに割り当てられるコア数の総計が3コア以上であっても、ここで登録するライセンス数は 1 つです。

    Caution
    license.txt に記載する「ライセンスキー」は 1 つですが、コンテナに割り当てるコア数に応じた数の WebOTX Application Server Express Processor License for Container を購入していただく必要があります。

  4. コンテナイメージ生成

    コンテナイメージを生成します。PowerShell で以下のコマンドを実行します。指定するイメージ名はコンテナイメージ名の規約に従ってください。

    PS> docker image build -t <イメージ名> <作業フォルダ>
    
  5. 生成されたコンテナイメージの確認

    コンテナイメージが生成されていることを確認します。PowerShell で以下のコマンドを実行します。

    PS> docker image ls
    REPOSITORY                            TAG           IMAGE ID      CREATED
    <イメージ名>                          <タグ>        ************  ** **** ago
    mcr.microsoft.com/windows/servercore  ltsc2016      ************  ** **** ago
    

    生成時に指定した名前のイメージが表示されれば、作成完了です。

1.3.2. 追加構成

WebOTX Application Serverのコンテナイメージを生成する際に追加の構成を行う方法を説明します。

追加の構成を行うには、[ ファイルの準備とコンテナイメージの生成 ] の手順(2)で用意したテキストファイル<作業フォルダ>\Dockerfile を編集してください。

Dockerfile内で使用するファイルは、<作業フォルダ>に配置します。

Caution
Dockerfileの内容およびCOPYまたはADDでコピーしたファイルが中間イメージに残る点に注意してください。
[ 注意制限事項 > 機能ごとの注意制限事項 > Docker > 注意事項 > 追加構成に使用したファイルが中間イメージに残る ]

Caution
追加の構成を行う際、自身のホスト名を指定する場合は「localhost」を使用することで、コンテナ起動時にコンテナのホスト名に自動的に置き換わります。
[ 注意制限事項 > 機能ごとの注意制限事項 > Docker > 注意事項 > 自身のホスト名を指定する場合は「localhost」を使用する必要がある ]

1.3.2.1. 追加構成の実施例

追加構成を行うためのDockerfileの例を記載します。この例では、以下の構成を行います。

Dockerfile を以下のように変更します。

「# configure domain1」の行の次(RUN の前)に COPY 命令を追加して追加構成で使用するファイルをコンテナ内にコピーします。

COPY derbyclient.jar C:/WebOTX/domains/domain1/lib/ext/
COPY app.war C:/temp/

「# configure domain1」の RUN 命令の中の「C:\WebOTX\bin\otxadmin.bat stop-domain domain1 ; \」の行の前後に設定変更やファイルの削除の処理を追加します。

    C:\WebOTX\bin\otxadmin.bat set --user admin --password adminadmin server.microprofile.microprofile-health.enabled=true ; \
    C:\WebOTX\bin\otxadmin.bat set --user admin --password adminadmin server.microprofile.microprofile-metrics.enabled=true ; \
    C:\WebOTX\bin\otxadmin.bat create-jdbc-datasource --user admin --password adminadmin --dataSourceType JDBCEX_Derby --jdbcMajorVersion 4 --jdbcUserName APP --jdbcPassword APP --serverName hostname --portNumber 1527 --dataSourceName sample-db jdbc/sample ; \
    C:\WebOTX\bin\otxadmin.bat deploy --user admin --password adminadmin C:\temp\app.war ; \
    C:\WebOTX\bin\otxadmin.bat stop-domain domain1 ; \
    Remove-Item C:\temp -Recurse -Force ; \

Dockerfile内で使用するファイル derbyclient.jar と hello.war は<作業フォルダ>に配置します。

Dockerfileの変更およびファイルの配置後に、[ ファイルの準備とコンテナイメージの生成 ] の手順(4)に記載の方法でコンテナイメージを生成することで、追加構成を実施したコンテナイメージが生成されます。

1.3.2.2. パッチ適用の実施例

WebOTX Application Serverのパッチ適用を行うためのDockerfileの例を記載します。

Dockerfile を以下のように変更します。

「# install WebOTX AS Express」の RUN の前の行に COPY 命令を追加してWebOTX Application Serverのパッチファイルをコンテナ内にコピーします。

COPY <パッチファイル(.zip)名> C:/temp/webotx_as_patch_win.zip

「# install WebOTX AS Express」の RUN 命令の中の「Start-Process C:\temp\EXP\setup.exe 〜 -Wait ; \」の後の行に以下の内容を挿入します。
ここでは、パッチの展開、パッチ適用スクリプトを非対話実行可能に変更、パッチ適用スクリプトを実行という処理を行います。

    Expand-Archive -Path C:\temp\webotx_as_patch_win.zip -DestinationPath C:\temp\patch ; \
    $newContent = Get-Content C:\temp\patch\bin\wo_patch_edition.bat ; \
    $newContent = $newContent ^| ForEach-Object { if ($_.Trim().StartsWith('set BACKUPFILE=')) { 'set BACKUPFILE=webotx_as_%BACKUPFILEVERSION%_backup.zip' } else { $_ } } ; \
    $newContent = $newContent ^| ForEach-Object { if ($_.Trim().StartsWith('set LOGFILE=')) { 'set LOGFILE=webotx_as_patch.log' } else { $_ } } ; \
    $newContent = $newContent.Replace('for /f \"tokens=4\" %%L in (''\"%INSTALLDIR%bin\otxadmin.bat\" version'') do (', 'for /f \"tokens=3,4\" %%K in (''\"%INSTALLDIR%bin\otxadmin.bat\" version'') do if \"%%K\" == \"Version\" (') ; \
    $newContent = $newContent ^| ForEach-Object { if ($_.Trim().StartsWith('set /p APPLYPATCH=')) { 'set APPLYPATCH=y' } else { $_ } } ; \
    $newContent = $newContent.Replace('pause', '') ; \
    $newContent ^| Out-String ^| % { [Text.Encoding]::UTF8.GetBytes($_) } ^| Set-Content -Path C:\temp\patch\bin\wo_patch_edition.bat -Encoding Byte ; \
    C:\temp\patch\bin\wo_patch_edition.bat ; \

Dockerfile内で使用するWebOTX Application Serverのパッチファイルは<作業フォルダ>に配置します。

Dockerfileの変更およびWebOTX Application Serverのパッチファイルの配置後に、[ ファイルの準備とコンテナイメージの生成 ] の手順(4)に記載の方法でコンテナイメージを生成することで、パッチ適用されたコンテナイメージが生成されます。

1.3.3. 追加ライセンス登録

WebOTX Application Serverのコンテナイメージを生成する際に追加のライセンス登録を行う方法を説明します。

追加のライセンスを登録するには、[ ファイルの準備とコンテナイメージの生成 ] の手順(2)で用意したテキストファイル<作業フォルダ>\Dockerfile を編集して、「# bootstrap script」の前の行に以下の行を挿入してください。

RUN C:\WebOTX\share\bin\OTXLAdd.exe <ライセンスキー> && exit 1 || exit 0

1.3.4. 生成済みのWebOTX Application Serverのコンテナイメージに対する追加構成

WebOTX Application Serverのコンテナイメージを生成した後、そのコンテナイメージに対して追加の構成を行う方法を説明します。

生成済みのコンテナイメージに対して追加の構成を行うには、任意の新規フォルダにDockerfileを作成して、FROM命令で指定するベースイメージに生成済みのWebOTX Application Serverのコンテナイメージ名を指定します。
さらに、DockerfileでADD, COPY, RUN等の命令を用いて追加構成を行います。

Caution
Dockerfileの内容およびCOPYまたはADDでコピーしたファイルが中間イメージに残る点に注意してください。
[ 注意制限事項 > 機能ごとの注意制限事項 > Docker > 注意事項 > 追加構成に使用したファイルが中間イメージに残る ]

Caution
追加の構成を行う際、自身のホスト名を指定する場合は「localhost」を使用することで、コンテナ起動時にコンテナのホスト名に自動的に置き換わります。
[ 注意制限事項 > 機能ごとの注意制限事項 > Docker > 注意事項 > 自身のホスト名を指定する場合は「localhost」を使用する必要がある ]

1.3.4.1. 追加構成の実施例

生成済みのWebOTX Application Serverのコンテナイメージに対して追加構成を行う例を記載します。

この例では、以下の構成を行います。

以下の内容の Dockerfile を作成します。

FROM <生成済みのWebOTX Application Serverのコンテナイメージ名>

# Configuration
COPY derbyclient.jar C:/WebOTX/domains/domain1/lib/ext/
COPY app.war C:/temp/
RUN powershell.exe -Command \
    $ErrorActionPreference = 'Stop' ; \
    C:\WebOTX\bin\otxadmin.bat start-domain domain1 ; \
    Start-Sleep 20 ; \
    C:\WebOTX\bin\otxadmin.bat set --user admin --password adminadmin server.microprofile.microprofile-health.enabled=true ; \
    C:\WebOTX\bin\otxadmin.bat set --user admin --password adminadmin server.microprofile.microprofile-metrics.enabled=true ; \
    C:\WebOTX\bin\otxadmin.bat create-jdbc-datasource --user admin --password adminadmin --dataSourceType JDBCEX_Derby --jdbcMajorVersion 4 --jdbcUserName APP --jdbcPassword APP --serverName hostname --portNumber 1527 --dataSourceName sample-db jdbc/sample ; \
    C:\WebOTX\bin\otxadmin.bat deploy --user admin --password adminadmin C:\temp\app.war ; \
    C:\WebOTX\bin\otxadmin.bat stop-domain domain1 ; \
    Remove-Item C:\temp -Recurse -Force ; \
    Remove-Item C:\WebOTX\domains\domain1\backup -Recurse -Force ; \
    Remove-Item C:\WebOTX\domains\domain1\osgi-cache -Recurse -Force ; \
    Remove-Item C:\WebOTX\domains\domain1\config\ObjectBroker\namesv.ndf -Force

Dockerfile内で使用するファイル derbyclient.jar と hello.war はDockerfileと同じフォルダに配置します。

DockerfileおよびDockerfile内で使用するファイルの準備後に、[ ファイルの準備とコンテナイメージの生成 ] の手順(4)に記載の方法でコンテナイメージを生成することで、追加構成を実施したコンテナイメージが生成されます。
その際、docker image buildコマンドに指定する作業フォルダとは、[ ファイルの準備とコンテナイメージの生成 ] の手順(2)で準備したフォルダではなく、追加構成のために新規に作成したDockerfileがあるフォルダを指定します。

1.3.4.2. パッチ適用の実施例

生成済みのWebOTX Application Serverのコンテナイメージに対してパッチを適用する例を記載します。

以下の内容の Dockerfile を作成します。

FROM <生成済みのWebOTX Application Serverのコンテナイメージ名>

# Apply patch
COPY <パッチファイル(.zip)名> C:/temp/webotx_as_patch_win.zip
RUN powershell.exe -Command \
    $ErrorActionPreference = 'Stop' ; \
    Expand-Archive -Path C:\temp\webotx_as_patch_win.zip -DestinationPath C:\temp\patch ; \
    $newContent = Get-Content C:\temp\patch\bin\wo_patch_edition.bat ; \
    $newContent = $newContent ^| ForEach-Object { if ($_.Trim().StartsWith('set BACKUPFILE=')) { 'set BACKUPFILE=webotx_as_%BACKUPFILEVERSION%_backup.zip' } else { $_ } } ; \
    $newContent = $newContent ^| ForEach-Object { if ($_.Trim().StartsWith('set LOGFILE=')) { 'set LOGFILE=webotx_as_patch.log' } else { $_ } } ; \
    $newContent = $newContent.Replace('for /f \"tokens=4\" %%L in (''\"%INSTALLDIR%bin\otxadmin.bat\" version'') do (', 'for /f \"tokens=3,4\" %%K in (''\"%INSTALLDIR%bin\otxadmin.bat\" version'') do if \"%%K\" == \"Version\" (') ; \
    $newContent = $newContent ^| ForEach-Object { if ($_.Trim().StartsWith('set /p APPLYPATCH=')) { 'set APPLYPATCH=y' } else { $_ } } ; \
    $newContent = $newContent.Replace('pause', '') ; \
    $newContent ^| Out-String ^| % { [Text.Encoding]::UTF8.GetBytes($_) } ^| Set-Content -Path C:\temp\patch\bin\wo_patch_edition.bat -Encoding Byte ; \
    C:\temp\patch\bin\wo_patch_edition.bat ; \
    Remove-Item C:\temp -Recurse -Force

Dockerfile内で使用するWebOTX Application ServerのパッチファイルはDockerfileと同じディレクトリに配置します。
パッチのreadmeで適用後の作業指示がある場合は、指示された内容をDockerfileのRUN命令で実行します。

DockerfileおよびWebOTX Application Serverのパッチファイルの準備後に、[ ファイルの準備とコンテナイメージの生成 ] の手順(4)に記載の方法でコンテナイメージを生成することで、パッチ適用されたコンテナイメージが生成されます。
その際、docker image buildコマンドに指定する作業フォルダとは、[ ファイルの準備とコンテナイメージの生成 ] の手順(2)で準備したフォルダではなく、パッチ適用のために新規に作成したDockerfileがあるフォルダを指定します。