CookBook

intra-mart WebPlatform 7.2 の Docker を作成する

投稿日:2018-10-03 更新日:

この CookBook では、intra-mart WebPlatform 7.2 の Docker の作成手順について紹介しています。

レシピ

  1. ベースイメージの作成
  2. intra-mart WebPlatform 7.2 の Docker イメージを作成します
  3. 実行します

1. ベースイメージの作成

CentOS 5.11 を使用します。

Dockerfile

CentOS-Base.repo

ロケールを ja_JP, タイムゾーンを Asia/Tokyo に変更し、root/password で ssh 接続ができるように設定します。
また、そのままでは yum が利用できないため、リポジトリの参照先を http://vault.centos.org に変更しています(CentOS-Base.repo)。
参考:Yum update error on CentOS 5.6

mycentos:5.11 というタグでビルドします。

2. intra-mart WebPlatform の Docker イメージを作成します

先ほど作成したベースイメージを利用します。
jdk-6u45-linux-x64.bin を事前にダウンロードしておきます。
entrykit_0.4.0_Linux_x86_64.tgz を事前にダウンロードしておきます。
iWP 7.2 の setup.jar も事前に準備しておきます。
また、事前に java -jar setup.jar -s iwp7.2.0.install を実行して保存したサイレントインストール用のファイル(iwp7.2.0.install)を準備しておきます。
サイレントインストールについては intra-mart WebPlatform をサイレントインストールする方法を参照してください。
さらに、以下のように data-source.xml, http.xml を事前に用意しておきます。

Dockerfile

細かいセットアップはシェルスクリプトに逃がし、Dockerfile からはそれを実行するようにします。
これにより、Dockerfile をシンプルにでき、かつイメージ容量の削減にもつながります。

http.xml ファイルに PostgreSQL への接続情報を環境変数で受け取れるようにします。
そのための処理を entrykit の render 機能で実現しています。
http.xml の元となるファイルを /usr/local/imart/conf/http.xml.tmpl に COPY コマンドでコピーし、ENTRYPOINT にて render しています。
こうすることで、docker run 時に entrykit の render を動かし、/usr/local/imart/conf/http.xml.tmpl を元に /usr/local/imart/conf/http.xml を生成します。

setup_jdk.sh

Java 1.6.0_45 のセットアップスクリプトです。

setup_iwp.sh

iWP 7.2.0 のセットアップスクリプトです。
サイレントインストールファイル(iwp7.2.0.install)を利用してサイレントインストールを行います。
また、Java のリモートデバッグをポート 9009 で開放するためのオプションを追加で設定しています。

iwp7.2.0.install

事前に java -jar setup.jar -s iwp7.2.0.install にてサイレントインストール用のファイルを作成します。
IP アドレスは docker run 時に決まるため、サイレントインストール時には 127.0.0.1 を指定します。
docker run 時に実行する run.sh ファイルにて、設定ファイル中の 127.0.0.1 を実際のコンテナの IP アドレスに置き換える処理を入れています。

run.sh

docker run 時に実行するスクリプトです。
sshd と iWP を起動しています。
また、http.xml と imart.xml にインストール時に指定した IP アドレス 127.0.0.1 を、Docker コンテナ実行時の IP アドレスに置換しています。

myiwp というタグでビルドします。

http.xml.tmpl

事前に iWP 7.2.0 をインストールしそのインストール先のフォルダから http.xml を http.xml.tmpl としてコピーします。
さらに、199行~210行目に PostgreSQL で接続するためのデータベース接続先を定義します(この CookBook の Docker では PostgreSQL のみ対応することとします)。

行数 環境変数 説明
203 PG_URL PostgreSQL データベースへの接続先 URL の情報を、PG_URL 環境変数として受け取るようにしています。
204 PG_USER PostgreSQL データベースへの接続先ユーザの情報を、PG_USER 環境変数として受け取るようにしています。
205 PG_PASSWORD PostgreSQL データベースへの接続先ユーザのパスワードの情報を、PG_PASSWORD 環境変数として受け取るようにしています。

docker run 時に -e オプションにて PG_URL, PG_USER, PG_PASSWORD 環境変数を指定してもらう作りとしています。
そのため、http.xml ファイルの199行~210行目を追加し、環境変数に応じて設定値を変更する処理を行っています。
設定ファイル中にこのように記載することで entrykit の render 実行時に環境変数の値に置き換えることができます。

data-source.xml

java:comp/env/jdbc/postgres を設定済みの data-source.xml を用意します。

3. 実行します

この CookBook のコンテナは、PostgreSQL のみ対応しています。
PostgreSQL を別途用意し、docker run 時の PG_URL, PG_USER, PG_PASSWORD 環境変数にその接続情報を渡します。
上記の例では、mypostgresql.example.com:5432 の DB=iwp, user=imart, password=imart を利用します。

また、コンテナは root/password で ssh 接続ができるようになっています。
あくまで検証用の Docker としてこのように設定しているため、セキュリティにはご注意ください。

このように、Docker イメージ化するだけで、検証用の iWP をすぐに準備できます。
是非ご活用ください。

-CookBook

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

IM-BloomMaker ボタンに効果音を付ける方法

このCookBookでは、2022 Spring でリリースした「音声または動画○を再生する」アクションアイテムの利用方法について説明します。「音声または動画○を再生する」 アクションアイテムは、指定 …

no image

ViewCreatorの計算式で日付データを操作する例

ViewCreatorを利用するとデータベース等に格納されているデータを簡単に画面に表示することが出来ます。 ViewCreatorについて – intra-mart Accel Platform V …

no image

リッチテーブルの任意の列を非表示にする方法

このCookBookでは、リッチテーブルの任意の列を非表示にする方法について紹介しています。 列の非表示は intra-mart Accel Platform 2022 Spring から可能です。 …

no image

IM-BloomMaker Bulma のタブを使用したページ切り替え処理の作り方

このCookBookでは、Bulma のタブコンポーネントを使用したページ切り替え処理について紹介します。 完成イメージ 初期表示時 「Page2」タブ選択時 完成サンプル 以下の完成サンプルをダウン …

no image

IM-BloomMaker レイアウトの作り方(縦に並べる編)

この CookBook では、コンテンツ種別が Bulma のレイアウトを縦に並べる方法を紹介します。また、レイアウトを横に並べる編もありますので、併せてご確認ください。https://dev.int …