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

本記事では、Oracle 公式の Dockerfile とスクリプトを利用して、WebLogic Server 12.2.1 がインストールされた Docker コンテナを、Vagrant のゲストOS上に構成します。
この手順により、以下のような構成の WLS 12.2.1 環境が出来上がります。

  --------------------------------------------------
  | Dockerコンテナ (Oracle Linux 7.0) + WLS 12.2.1 |
  --------------------------------------------------
  | ゲストOS(CentOS 7) + Docker                   |
  --------------------------------------------------
  | ホストOS (Windows) + VirtualBox                |
  --------------------------------------------------

私の環境は Windows 7 Professional x64 なので、本手順の実績のあるホストOSは左記のものになります。また、WLS のドメインは、本記事の手順では空のドメインが構成されます。

サンプルアプリなどがインストールされた環境を作ることもできるはずですが、手順を確立したら、追って紹介したいと思います。

手順

1. 事前準備

1-1. 必要なソフトウェアを準備する

はじめに、ソフトウェアをインストールしていきます。(括弧内は、本手順の確認に使用したバージョン)

1-1-1. VirtualBoxのインストール

ダウンロードサイトから適切なインストーラをダウンロードし、実行します。

1-1-2. Cygwinのインストール

ダウンロードサイトから適切なインストーラをダウンロードし、実行します。

Cygwinのインストールの際、以下のコンポーネントを併せてインストールしておく必要がありますので注意してください(後からでも追加できます)。

インストールが完了したら、Cドライブへのシンボリックリンクを貼っておきます。これにより、ゲストOSとホストOSの共有フォルダを構成する際に、ホストOS側のパスを正しく解決できるようにします。
Cygwinを起動して、以下のコマンドを実行してください。

$ cd /
$ ln -s /cygdrive/c c
1-1-3. Vagrantのインストール

ダウンロードサイトから適切なインストーラをダウンロードし、ウィザートにしたがってインストールします。

インストールが完了したら、vbguestプラグインをインストールします。これにより、VagrantにVirtutalBoxのguest additionsを自動更新するためのプラグインをインストールします。
Cygwinを起動して、以下のコマンドを実行してください。

$ cd ~/
$ vagrant plugin install vagrant-vbguest

1-2. 作業フォルダを作成する

今回は、作業フォルダのトップを "~/dock" とします。ここが Vagrant プロジェクトのルートディレクトリも兼ねることにします。
Cygwinを起動して、以下のコマンドを実行します。

$ mkdir ~/dock

1-3. Oracle 公式の Dockerfile、スクリプト群をダウンロードする

Oracle が提供する Dockerfile、スクリプト群 をダウンロードします。公式のマニュアルからリンクされていますので、Oracle が公式に提供しているもののようです。

上記リンク先で、[Download ZIP] をクリックして zip アーカイブをダウンロードします。アーカイブを解凍したら、docker-master ディレクトリ配下のファイル、ディレクトリを、~/dock 直下にコピーします。

1-4. Vagrantfile を作成する

ゲストOSは Vagrant を使ってプロビジョニングするので、Vagrantfile を ~/dock の配下に作成します。
内容は以下のようにします。リソースの割当て量は、環境に合わせて調整してください。

Vagrant.configure(2) do |config|

    config.vm.define :dock, primary: true do |dock|
        # VM settings
        dock.vm.box = "centos/7"
        dock.vm.provider "virtualbox" do |v|
            v.name = "dock"
            v.cpus = "2"
            v.memory = "4096"
        end
        dock.vm.synced_folder ".", "/vagrant", type: "rsync"
        dock.vm.network "forwarded_port", host: 5556, guest: 5556
        dock.vm.network "forwarded_port", host: 7001, guest: 7001
        dock.vm.network "forwarded_port", host: 7011, guest: 7011
        dock.vm.network "forwarded_port", host: 8001, guest: 8001

        # Provisioner settings
        config.vm.provision "docker"
    end

end

ゲストOSに Dockerfile 等を転送する手間を省くために、~/dock(カレントディレクトリ)との共有ディレクトリを設定しています。
また、WebLogic Server を使うときに用いる主要なポート対し、ポートフォワーディングの設定をしています。

1-5. WebLogic Server,JDKインストーラをダウンロードする

以下のインストーラをダウンロードし、~/dock/OracleWebLogic/dockerfiles/12.2.1/ に配置します。

ここまでの手順を終えると、ディレクトリは、以下の様な構成となるはずです。間違って配置されていないか、注意してください。

~/dock
├─MySQL/
├─OracleCoherence/
│    …
├─OracleWebLogic/
│  ├─dockerfiles/
│  │  ├─12.1.3/
│  │  │    …
│  │  ├─12.2.1/
│  │  │  ├―fmw_12.2.1.0.0_wls_quick.jar
│  │  │  ├―jdk-8u60-linux-x64.rpm
│  │  │  └―Dockerfile.developer
│  │  │    …
│  │  └─buildDockerImage.sh
│  └─samples/
│      ├─1213-domain/
│      │  └─container-scripts/
│      │        …
│      │    …
│      └─1221-domain/
│          ├─container-scripts/
│          │    …
│          └―Dockerfile.emptydomain
│              …
├─README.md
└―Vagrantfile

以上で準備完了です。

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

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

ゲストOSの box イメージを取得します。本記事では CentOS 7 を利用します。Cygwin を起動して、以下のコマンドを実行します。

$ vagrant box add centos/7 --provider virtualbox

次に、以下のコマンドを実行します。ゲストOSのプロビジョニングが行われ、続けてゲストOSが起動します。

$ cd ~/dock
$ vagrant up

上記のコマンドの完了したら、SSHでゲストOSに接続し、~/sync フォルダ以下にホストOSの ~/dock 配下のファイルが参照できることを確認してください。

$ vagrant ssh
[vagrant@guest] $ ls ~/sync

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

以下のコマンドを実行して Docker イメージをビルドします。以降のコマンドは、ゲストOS上で実行することに注意してください。

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

ビルドの処理の中で、WebLogic Server のインストールも行われます。正常に処理が完了すると、WebLogic Server をインストール済みの Docker イメージができあがります。

更に、上記の Docker イメージをベースにして、空のWLSドメインを構成済みの Docker イメージをビルドします。

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

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

以下のコマンドを実行して、ビルドした Docker イメージからコンテナを起動します。startWebLogic.sh が自動的に実行されます。

[vagrant@guest] $ sudo docker run -p 5556:5556 -p 7001:7001 -p 7011:7011 -p 8001:8001 -it --name=wlsadmin myweblogic:12.2.1

上記のコマンドで、-p オプションを複数していますが、これらは、Docker コンテナとゲストOS間のポートフォワーディングの設定です。

バックグラウンドで起動する場合は、以下のようにコマンドのオプションを変更します。

[vagrant@guest] $ sudo docker run -p 5556:5556 -p 7001:7001 -p 7011:7011 -p 8001:8001 -d --name=wlsadmin myweblogic:12.2.1

2-4. 管理コンソールにアクセスしてみる

Dockerコンテナへのポートフォワーディングが設定済みです。ホストOSのブラウザで、以下のURLにアクセスすると、WLSの管理コンソールにアクセスできます。

http://localhost:8001/console

管理者ユーザーのユーザーのユーザー名、パスワードは以下のとおりです。

  • ユーザー名: weblogic
  • パスワード: welcome1


WebLogic Server 12.2.1 がインストールされた Docker コンテナを、Vagrant のゲストOS上に構成する手順は、以上です。