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

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

関連記事

no image

IM-FormaDesignerで複数のセレクトボックスを連動させて利用する方法

このCookbookでは、セレクトボックスの選択結果によって、他のセレクトボックスの選択肢を絞り込む方法を説明します。 この方法は、IM-FormaDesignerのみ導入環境での方法です。 IM-B …

スプレッドシートにフロー毎の未処理件数を表示するポートレットの作成方法

このクックブックでは、スプレッドシートにフロー毎の未処理件数を表示するポートレットの作成方法をご紹介します。 ポートレットは、スプレッドシートとIM-Workflow REST APIを利用して作成し …

IM-BloomMaker アクション「エレメントの位置へ遷移する」の使い方

このCookBookでは、intra-mart Accel Platform 2024 Autumnでリリースしたアクション「エレメントの位置へ遷移する」の使い方について紹介しています。 完成イメージ …

Adobe Acrobat Sign連携を利用する

このCookBookでは、IM-Signを利用したサンプルを紹介します。 サンプルでは、Workflow/BISの案件に紐づいたAdobe Acrobat Sign(以下Acrobat Sign)の契 …

no image

Docker Swarm を利用して Resin のクラスタリングを構築する。

この CookBook では、Docker Swarm を利用して Resin のクラスタリングを構築する手順について紹介しています。 Docker Swarm を利用することで、複数マシンにまたがっ …