这篇文章描述了如何使用Docker EE来部署使用Oracle数据库运行在Oracle WebLogic Server上的MedRec实例应用.
略
下图是运行在Docker EE上的Oracle WebLogic, Oracle Database 和 MedRec(这个是Oracle WebLogic官方的sample应用)应用的架构图:

Oracle-WebLogic-Database-MedRec.png
你需要以下组件来实现向导中的架构:
Docker Enterprise Edition 2.0, UCP 3.0.1, DTR 2.5.1 for Ubuntu
Oracle
Oracle WebLogic Server 12.2.1.2 Supplemental Quick Installer
安装Git套件. 在终端窗口, 跳转到你将要存放仓库的位置(或者新建一个), 运行如下命令:
$ git clone https://github.com/docker/docker-for-oracle-weblogic
下载Oracle WebLogic Server 12.2.1.2 Supplemental Quick Installer(fmw_12.2.1.2.0_wls_supplemental_quick_Disk1_1of1.zip), 把这个zip文件(不用解压)放到当前目录.
下载 Oracle SQL Developer command-line (SQLcl) tool (sqlcl-17.4.0.354.2224-no-jre.zip), 把该zip文件(不用解压)放到当前目录.
使用WebLogic和Database镜像的Dockerfile来自Docker Store. 无需进行修改.
(可选)如果DB 用户名/密码有更改, 编辑 docker-for-oracle-weblogic/container-scripts/oradatasource.properties文件,设置要连接的Oracle Database容器对应的Oracle Thin XA驱动, 数据库URL, 用户名, 密码, DB name.
domainname=medrec domainhome=/u01/oracle/wlserver/samples/domains/medrecadmin_name=MedRecServer dsname=MedRecGlobalDataSourceXA dsdbname=ORCLCDB dsjndiname=jdbc/MedRecGlobalDataSourceXA dsdriver=oracle.jdbc.xa.client.OracleXADataSource dsurl=jdbc:oracle:thin:@orcldb:1521:ORCLCDBdsusername=sys as sysdba dspassword=Oradoc_db1 dstestquery=SELECT * FROM DUAL dsmaxcapacity=1
打开浏览器, 登陆Docker Store.
通过点击Proceed to Checkout来购买Oracle WebLogic Server (就是个官方镜像) and Oracle Database Enterprise Edition (就是个官方镜像)的订阅.
回到命令行, 确保你已经登陆了Docker Store/Hub:
$ docker login
构建 MedRec 镜像(扩展WebLogic镜像):
./build.sh
打标签
$ docker tag 1221-oradb-medrec:latest 1221-oradb-medrec:1.0
build.sh内容:#!/bin/shdocker build -t 1221-oradb-medrec .
如果使用Kubernetes, 请看下一章节内容.
要使用Swarm orchestrator部署, 执行:
$ docker compose up -d Creating docker-for-oracle-weblogic_orcldb_1 ... done Creating docker-for-oracle-weblogic_wls_1 ... done
启动进程可以通过查看日志来监控. 应用要准备好(可用于测试)会花费5到6分钟:disappointed:(取决于CPU/内存的配置).
$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS 1b934b0f140c 1221-oradb-medrec:1.0 "startSample.sh" 2 minutes ago Up 2 minutes dc9a4f123bcf store/oracle/database-enterprise:12.2.0.1 "/bin/sh -c '/bin/ba…" 2 minutes ago Up 2 minutes (healthy)
如果Kubernetes没启用, 先启用.
例如, 在Docker for Mac中, 访问Docker for Mac的top menu bar, 点击Preferences. 点击Kubernetes, 确保Enable Kubernetes checkbox被选中. 点击Apply. Docker for Mac然后会重启, Kubernetes会启用.
要使用Kubernetes orchestrator 来部署, 执行:
kubectl create -f weblogic-oracledb-kubernetes.yaml service "wls" created deployment "wls" created service "orcldb" created deployment "orcldb" created
会启动2个叫做medrec和orcldb的services和2个deployments. 使用kubectl get命令来验证Kubernetes部署. 输出类似这样:
kubectl get pods NAME READY STATUS RESTARTS AGE orcldb-575b6d95d9-n5f4r 1/1 Running 0 42s wls-fdddbfcb8-997fg 1/1 Running 0 42s
kubectl get deployments NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE orcldb 1 1 1 1 11m wls 1 1 1 1 11m
kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d orcldb ClusterIP 10.97.195.134 <none> 1521/TCP,5500/TCP 10m wls LoadBalancer 10.111.246.133 localhost 7011:30035/TCP 10m
weblogic-oracledb-kubernetes.yaml内容如下:apiVersion: v1kind: Servicemetadata: name: wlsspec: type: LoadBalancer ports: - port: 7011 selector: app: wls---apiVersion: apps/v1beta2kind: Deploymentmetadata: name: wlsspec: selector: matchLabels: app: wls strategy: type: Recreate template: metadata: labels: app: wls spec: containers: - image: 1221-oradb-medrec:1.0 name: wls ports: - containerPort: 7011 name: wls---apiVersion: v1kind: Servicemetadata: name: orcldbspec: ports: - port: 1521 name: sqlnet - port: 5500 name: oraclexml selector: app: orcldb---apiVersion: apps/v1beta2kind: Deploymentmetadata: name: orcldbspec: selector: matchLabels: app: orcldb strategy: type: Recreate template: metadata: labels: app: orcldb spec: containers: - image: store/oracle/database-enterprise:12.2.0.1 name: orcldb ports: - containerPort: 1521 name: sqlnet - containerPort: 5500 name: oraclexml
访问WebLogic控制台:
http://localhost:7011/console

Oracle-Weblogic-Console-Login.png
使用账号密码登陆: weblogic/welcome1

Oracle-Weblogic-Console.png
访问MedRec应用:
http://localhost:7011/medrec

MedRecSplash.png
要停止应用容器, 执行:
$ docker-compose downStopping wls-medrec ... done Stopping orcldb ... done Removing wls-medrec ... done Removing orcldb ... odone
接下来请查看在Docker EE上配置和部署章节.
要停止应用, 执行:
kubectl delete svc orcldb wls service "orcldb" deleted service "wls" deleted
kubectl delete deployments deployment "orcldb" deleted deployment "wls" deleted
可以看看怎么配置PV, 其他都可以忽略.
要在Docker EE 2.0上跟着这篇应用向导部署Oracle WebLogic和Oracle Database, 首先要分配几个合适配置的节点做高可用. 在本例中, 分配了4个实例: 1个UCP管理节点和3个worker容器. UCP可以管理Kubernetes和Swarm编排.
Docker Trusted Registry(DTR) 也安装在其中一个worker容器中. 这篇向导假设UCP和DTR已经安装和配置好, 可以使用"admin" 账号和密码来访问.
略
要在本地卷上部署WebLogic和Oracle Database, 点击Verifying the Install. 如果出现service被移除或失败, 本地卷不能持久化.
要安装PV, 从store.docker.com上订阅一个合适的经过Docker认证过的卷插件. 本例中使用EMC’s Rex-Ray for AWS EBS.
要使用AWS EBS, 请按照docs.aws.amazon.com这篇文章来从AWS IAM服务上获取一个访问id和密钥.
使用下列命令安装该插件, EBS_ACCESSKEY就是刚刚获取的:
docker plugin install rexray/ebs EBS_ACCESSKEY=<mykey> EBS_SECRETKEY=<mysecretkey>
下表列出了需要定义的PV:
| Volume Name | Service | Container Mount point |
|---|---|---|
| db-oracle | orcldb | /ORCL |
在UCP上, 点击在左手边栏上的Volumes 选项. 点击Create Volumes, 并输入上表的信息:
Name: db-oracle Driver: rexray/ebs
把以下内容加到docker-compose-EE.yml中:
volumes: - db-oracle:/ORCLvolumes: db-oracle: driver: rexray/ebs
修改{dtr-registry-address} 为真实的DTR或Docker Hub地址.
复制完整内容到剪贴板. 确保缩进格式没问题.
访问UCP管理节点的URL并用admin登陆;
在UCP上, 点击出现在左手边侧边栏的Stacks 选项
点击Create Stack. 为该Stack输入个名称(如: demo)和模式(选择Swarm Services)
从剪贴板粘贴编辑好的docker-compose-EE.yml
最后, 点击Create 按钮来部署该stack.

UCP-Swarm-deploy.png
要验证容器是否成功运行, 点击在UCP主页左侧边栏的Services. 这2个服务demo_wls, demo_orcldb应该显示绿色的状态并且没有错误.

UCP-Swarm-Services.png
要启动该应用, 点击左手边侧边栏的Swarm部分的Services. 选择load balances中的demo_wls. 点击地址Published Endpoints来跳转到Oracle WebLogic 和 Medrec 界面. 添加"/console/"来跳转到WebLogic界面, 添加"/medrec/"来跳转到MedRec应用.

作者:东风微鸣
链接:https://www.jianshu.com/p/58bbd3b8ae4c
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3676/viewspace-2820975/ ,如需转载,请注明出处,否则将追究法律责任。