WebLogic Server 12.2.1 + サンプルドメイン がインストールされた Docker コンテナを、Vagrant のゲストOS上に構成する

前回の記事に引き続き、WebLogic Server 12.2.1 がインストールされた Docker コンテナを、Vagrant のテストOS上に構成します。
今回は、WebLogic 公式のサンプルである、medrec ドメインを構成し、サンプルアプリケーションを動かしてみます。

本記事の手順により、12.2.1 の目玉機能である、Multitenant(マルチテナント)機能を試すこともできます。

手順

1. 事前準備

まずは、前回の記事の、「1-5. WebLogic Server, JDKインストーラをダウンロードする」までの手順を済ませてください。 以降はそれが済んだ後の手順となります。

1-1. サンプルドメイン構成用の Dockerfile を修正する

今回の手順では、サンプルドメイン構成用の Dockerfile を利用します。
ダウンロードしたものをそのまま利用すると、後の手順で Docker run したときに自動的にドメインの構成が開始されます。今回はそれでは都合がわるいので、少し手を加えます。

$ cd ~/dock/OracleWebLogic/samples/1221-domain
$ vi Dockerfile.supplementaldomain

ファイルの終わりの方に、Docker イメージの .bashrc に3行追記している箇所がある(L71-L73)ので、最後の1行の追記が行われないように編集してください。

編集前

RUN echo "cp /u01/oracle/weblogic.properties /u01/oracle/weblogic/wlserver/samples/server/medrec/weblogic.properties" >> /u01/oracle/.bashrc && \
    echo "cp /u01/oracle/startSamples.sh /u01/oracle/weblogic/wlserver/samples/server/medrec/startSamples.sh" >> /u01/oracle/.bashrc && \
    echo ". /u01/oracle/weblogic/wlserver/samples/server/medrec/startSamples.sh" >> /u01/oracle/.bashrc

編集後

RUN echo "cp /u01/oracle/weblogic.properties /u01/oracle/weblogic/wlserver/samples/server/medrec/weblogic.properties" >> /u01/oracle/.bashrc && \
    echo "cp /u01/oracle/startSamples.sh /u01/oracle/weblogic/wlserver/samples/server/medrec/startSamples.sh" >> /u01/oracle/.bashrc

1-2. 必要なインストーラをダウンロードする

サンプルドメインをインストールするには、Suppelemental Quick Installer で、追加のコンポーネントをインストールする必要があります。

こちらから、fmw_12.2.1.0.0_wls_supplemental_quick.jar をダウンロードし、~/dock/OracleWebLogic/samples/1221-domain/ に配置します。

2. ゲストOS、Docker コンテナを起動する

2-1. ゲストOSのプロビジョニング

前回の記事の「2-1. ゲストOSのプロビジョニング」と同じ手順を実施してください。

2-2. Dcoker イメージのビルド

ここからは、ゲストOS上での手順です。まずは Docker イメージをビルドします(前回と同じ)。

[vagrant@guest] $ cd ~/sync/OracleWebLogic/dockerfiles
[vagrant@guest] $ sudo sh buildDockerImage.sh -v 12.2.1 -d

この Docker イメージをベースにして、Supplemental Quick Installer の追加コンポーネントをインストールした Docker イメージをビルドします。

[vagrant@guest] $ cd ~/sync/OracleWebLogic/samples/1221-domain
[vagrant@guest] $ ln -s ./Dockerfile.supplementaldomain ./Dockerfile
[vagrant@guest] $ sudo docker build -t wls.supplementaldomain:12.2.1 ./

2-3. Docker コンテナの起動

以下のコマンドで Docker コンテナを起動します(ポートフォワーディングの設定は必要な物に絞ってあります)

[vagrant@guest] $ sudo docker run -p 7011:7011 -it --name=wlsadmin wls.supplementaldomain:12.2.1
[oracle@xxxxxxxxxxxx medrec]$ (←コンテナのシェルに切り替わる)

3. medrec ドメインを構成する

3-1. 管理サーバーの起動スクリプトの修正

ドメインの構成を行う前に、構成時に実行される管理サーバーの起動スクリプトに手を加えます。

このスクリプトでは、WLST を使って管理サーバーの起動をおこなっています。この処理で、起動状態のヘルスチェックでタイムアウトとなることを避けるため、タイムアウト時間を無制限(0)に変更します。

[oracle@xxxxxxxxxxxx medrec]$ cd /u01/oracle/weblogic/wlserver/samples/server/medrec/install/common
[oracle@xxxxxxxxxxxx common]$ vi startAdminServer.py

変更前

startServer(serverName, domainName, url, username, password, domainDir, 'true', jvmArgs=jvmargs)

変更後

startServer(serverName, domainName, url, username, password, domainDir, 'true', 0, jvmArgs=jvmargs)

3-2. ドメイン構成用スクリプトの修正(マルチテナントの medrec ドメインを構成する場合)

(シングルテナント(=従来と同じ)のドメインを構成したい場合は 3-3. に進んでください)

ドメインを構成するときに実行する startSamples.sh は、内部で ant コマンドを使っています。このコマンドのオプションを変えることによって、マルチテナントのドメインを構成することができます。

[oracle@xxxxxxxxxxxx medrec]$ cd /u01/oracle/weblogic/wlserver/samples/server/medrec
[oracle@xxxxxxxxxxxx common]$ vi startSamples.sh

変更前

ant single.server.sample

変更後

ant mt.single.server.sample

3-3. マルチテナントの madrec ドメインを構成する

いよいよドメインの構成を開始します。 コンテナ上で、以下のコマンドを実行します(結構時間がかかります)

[oracle@xxxxxxxxxxxx medrec]$ cd /u01/oracle/weblogic/wlserver/samples/server/medrec
[oracle@xxxxxxxxxxxx medrec]$ sh ./startSamples.sh

3-4. medrec アプリケーションにアクセスしてみる

無事に "BUILD SUCCESSFUL" のメッセージが表示されたら、ドメインの構成は完了です。WebLogic Server 管理コンソールと、medrec アプリケーションにアクセスしてみます。

おまけ: スクリーンショット

管理コンソール(マルチドメイン)にアクセスしたところ。
3つのドメインパーティションが構成されているのがわかります。

f:id:charlier_shoe:20151118123811p:plain

medrec アプリケーションにアクセスしたところ。
ドメインの切り分けが、URLのパス "/valley1" のところに反映されています。 ホストパート部分で切り替えることはできるのかな?パスで切り替えるのは嫌われるケースもありそうな気が。

f:id:charlier_shoe:20151118123817p:plain