WebLogic 12cの環境をとりあえず使ってみたい方向けに、2016年11月現在での方法を紹介します。こちらの記事は、12.2.1に対応しています。12.2.1.1以降はこちらの記事をどうぞ。
ノード・マネージャを使えば、サーバーの起動停止は管理コンソールで実施できます。しかし、Oracle公式のDockerイメージでは、管理サーバーのあるコンテナではノード・マネージャが稼働しません。管理サーバーを起動した後、ノード・マネージャが稼働するコンテナを作成します。
前提:
- GitとDockerが使える環境が既にある
- LinuxかMacを使っている (Windowsの場合は、適宜読み替えができる)
参考:
https://github.com/oracle/docker-images/tree/master/OracleWebLogic
の中の各種READMEなど
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サイトにて、利用許諾確認してダウンロード
- Linux x64版のJava8(マイナーバージョンは不問)
-
$WLS_DOCKER_DIR/OracleJava/java-8
に配置
WebLogic
- WebLogicのOTNサイトにて、利用許諾確認してLinux x64版をダウンロード
- 12.2.1のQuick Installer for Mac OSX, Windows and Linux
-
$WLS_DOCKER_DIR/OracleWebLogic/dockerfiles/12.2.1
に配置 - MD5チェックサムを、上記ディレクトリ内の
*.download
と比較して確認
2. Java Dockerイメージのビルド
$ cd $WLS_DOCKER_DIR/OracleJava/java-8
$ sh build.sh
...
Successfully built 4f40dfabddcf
3. WebLogic Dockerイメージのビルド
$ cd $WLS_DOCKER_DIR/OracleWebLogic/dockerfiles
$ sh buildDockerImage.sh -v 12.2.1 -d -s
...
Successfully built 0babafe5a6e3
WebLogic Docker Image for 'developer' version 12.2.1 is ready to be extended:
--> oracle/weblogic:12.2.1-developer
Build completed in 313 seconds.
「md5sum」がない環境でも実行できるよう、-s
をつけてチェックサム比較処理を回避しています。
4. ドメイン作成処理を追加したイメージのビルド
1221-domainを使います。
$ cd $WLS_DOCKER_DIR/OracleWebLogic/samples/1221-domain
$ docker build -t 1221-domain --build-arg ADMIN_PASSWORD=Welcome1 .
...
Successfully built fe9f79ebf038
5. WebLogic管理サーバーの起動
$ docker run -d --name=wlsadmin -p 8001:8001 1221-domain
管理サーバーの管理ポートが8001のため、Docker Machineのポート8001で、管理コンソールなどにアクセスできるようにしています。
6. ノード・マネージャが稼働するコンテナの起動
$ docker run -d --name machine1 --link wlsadmin:wlsadmin -p 7001:7001 1221-domain createMachine.sh
上記の場合、管理ポート7001で管理対象サーバーを作成すれば、Docker Machineのポート7001で、デプロイしたアプリにアクセスできるようになります。複数の管理対象サーバやポートを使用する予定の場合は、-p 7001:7001 -p 7002:7002 -p 7003:7003
などと書きます。
起動したコンテナの状態を確認します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e40f7eac343 1221-domain "createMachine.sh" 7 seconds ago Up 6 seconds 5556/tcp, 8001/tcp, 8453/tcp, 0.0.0.0:7001->7001/tcp machine1
ad5cb331b0d4 1221-domain "startWebLogic.sh" 27 seconds ago Up 27 seconds 5556/tcp, 7001/tcp, 8453/tcp, 0.0.0.0:8001->8001/tcp wlsadmin
7. 検証
管理コンソール
Docker Machine以外の環境からアクセスする場合は、localhostをDocker Machineのホスト名に置き換えてください。
開発モードとなっています。
ドメインに「Machine-コンテナID」という名前のマシンが作成されています。
「DockerCluster」という名前の空のクラスタが、必ず作成されます。現時点で、ソース変更以外に作成を回避する方法は見つかっていません。不要なら無視しましょう。
コンソールアクセス
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
8. 片付け
$ docker stop machine1 wlsadmin
$ docker rm machine1 wlsadmin
注意点
Oracle製品をプロジェクトに含んだ状態でDockerイメージを公開すると、利用許諾違反となります。また、利用許諾承認プロセスが組み込めないため、DockerHubにWebLogicのビルド済みイメージが公開される可能性は無いようです。レジストリサーバーを立てて、そこにビルド済みイメージを置いてDev/Ops間で共有するのは良いようです。
参考:
There should be official Versions of Weblogic on DockerHub. #13
Put this on docker hub #109