検証用に素のWeblogic環境をDockerで立ち上げる方法(12.2.1.1以降)

WebLogic 12cの環境をとりあえず使ってみたい方向けに、2016年11月現在での方法を紹介します。本記事は12.2.1.1以降に対応しています。12.2.1以前は[こちら](http://qiita.com/makopo/items/e1cc772853e2be1f5a85)の記事をどうぞ。

前提：
* GitとDockerが使える環境が既にある
* LinuxかMacを使っている (Windowsの場合は、適宜読み替えができる)

参考：
https://github.com/oracle/docker-images/tree/master/OracleWebLogic/dockerfiles/12.2.1.2

## 1. 必要なものをダウンロード

Oracle社公式のDockerイメージ

```
$ git clone --depth 1 https://github.com/oracle/docker-images
$ export WLS_DOCKER_DIR=`pwd`/docker-images
```
以下、```docker-images/```のパスを```$WLS_DOCKER_DIR```と表記します。

Java 8

 - [JavaのOTNサイト](http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html)にて、利用許諾確認してダウンロード
 - Linux x64版のJava8(マイナーバージョンは不問)
 - ```$WLS_DOCKER_DIR/OracleJava/java-8```に配置

WebLogic

 - [WebLogicのOTNサイト](http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-1703574.html)にて、利用許諾確認してLinux x64版をダウンロード
 - 12.2.1.1以降
 - 「Quick Installer for Mac OSX, Windows and Linux」でも「Generic」でも良い
 - ```$WLS_DOCKER_DIR/OracleWebLogic/dockerfiles/バージョン番号```に配置
 - MD5チェックサムを、上記ディレクトリ内の```*.download```と比較して確認

## 2. Java Dockerイメージのビルド

```
$ cd $WLS_DOCKER_DIR/OracleJava/java-8
$ sh build.sh
...
Successfully built 4f40dfabddcf
```

## 3. WebLogic Dockerイメージのビルド

Quick Installerの場合 (12.2.1.2の例)

```
$ cd $WLS_DOCKER_DIR/OracleWebLogic/dockerfiles
$ sh buildDockerImage.sh -v 12.2.1.2 -d -s
...
Successfully built 4e556102dd5f

  WebLogic Docker Image for 'developer' version 12.2.1.2 is ready to be extended: 
    
    --> oracle/weblogic:12.2.1.2-developer

  Build completed in 406 seconds.
```

Genericの場合 (12.2.1.2の例)

```
$ cd $WLS_DOCKER_DIR/OracleWebLogic/dockerfiles
$ sh buildDockerImage.sh -v 12.2.1.2 -g -s
...
Successfully built 5ddedc69755d

  WebLogic Docker Image for 'generic' version 12.2.1.2 is ready to be extended: 
    
    --> oracle/weblogic:12.2.1.2-generic

  Build completed in 545 seconds.
```

「md5sum」がない環境でも実行できるよう、```-s```をつけてチェックサム比較処理を回避しています。

## 4. WebLogic管理サーバーの起動

Quick Installerの場合 (12.2.1.2の例)

```
$ docker run -d --name=wlsadmin -p 8001:8001 oracle/weblogic:12.2.1.2-developer
```

Genericの場合 (12.2.1.2の例)

```
$ docker run -d --name=wlsadmin -p 8001:8001 oracle/weblogic:12.2.1.2-generic
```

管理サーバーの管理ポートが8001のため、Docker Machineのポート8001で、管理コンソールなどにアクセスできるようにしています。

12.2.1までは管理パスワードを指定できていたのですが、12.2.1.1以降では自動生成されたものが強制的に適用されます。現在のところ、パスワードを任意の文字にする方法は無いようです。このため、コンテナのログからパスワードを調べます。

```
$ docker logs wlsadmin | grep password
cat: date: No such file or directory
      ----> 'weblogic' admin password: d41d8cd9
admin password  : [d41d8cd9]
*  password assigned to an admin-level user.  For *
```

上記の例の場合、管理コンソールのパスワードは```d41d8cd9```となります。

## 5. 検証

### 管理コンソール

http://localhost:8001/console/

Docker Machine以外の環境からアクセスする場合は、```localhost```をDocker Machineのホスト名に置き換えてください。

開発モードとなっています。

### コンソールアクセス

oracleユーザーでコンテナにログインして、WLSTなどのコマンドを検証できます。

```
$ docker exec -it wlsadmin bash
```

### ファイルをアップロード

Docker Machineからコンテナへ、WLSTスクリプトやバイナリなどをコピーできます。

```
$ docker cp /path_in_dockermachine/SomeFile.zip wlsadmin:/path_in_container/
```

### 再起動

WebLogicサーバーの再起動は、Dockerコンテナの再起動で実施します。

```
$ docker stop wlsadmin
$ docker start wlsadmin
```

## 6. 片付け

```
$ docker stop wlsadmin
$ docker rm wlsadmin
```

## 注意点

Oracle製品をプロジェクトに含んだ状態でDockerイメージを公開すると、利用許諾違反となります。また、利用許諾承認プロセスが組み込めないため、DockerHubにWebLogicのビルド済みイメージが公開される可能性は無いようです。[レジストリサーバーを立てて、そこにビルド済みイメージを置いてDev/Ops間で共有するのは良いようです](https://github.com/oracle/docker-images/issues/109#issuecomment-227547774)。

参考：
[There should be official Versions of Weblogic on DockerHub. #13](https://github.com/oracle/docker-images/issues/13)
[Put this on docker hub #109](https://github.com/oracle/docker-images/issues/109)