Docker企業版2.0上執行Oracle WebLogic和Oracle Database 應用
[TOC]
概述
這篇文章描述瞭如何使用Docker EE來部署使用Oracle資料庫執行在Oracle WebLogic Server上的MedRec例項應用.
Oracle WebLogic 概述
略
架構
下圖是執行在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/medrec admin_name=MedRecServer dsname=MedRecGlobalDataSourceXA dsdbname=ORCLCDB dsjndiname=jdbc/MedRecGlobalDataSourceXA dsdriver=oracle.jdbc.xa.client.OracleXADataSource dsurl=jdbc:oracle:thin:@orcldb:1521:ORCLCDB dsusername=sys as sysdba dspassword=Oradoc_db1 dstestquery=SELECT * FROM DUAL dsmaxcapacity=1
建立MedRec Docker Image
-
開啟瀏覽器, 登陸 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/sh docker build -t 1221-oradb-medrec .
Swarm上驗證該部署
如果使用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 ps CONTAINER IDIMAGECOMMANDCREATEDSTATUS 1b934b0f140c1221-oradb-medrec:1.0"startSample.sh"2 minutes agoUp 2 minutes dc9a4f123bcfstore/oracle/database-enterprise:12.2.0.1"/bin/sh -c '/bin/ba…"2 minutes agoUp 2 minutes (healthy)
Kubernetes上驗證該部署
如果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 NAMEREADYSTATUSRESTARTSAGE orcldb-575b6d95d9-n5f4r1/1Running042s wls-fdddbfcb8-997fg1/1Running042s
kubectl get deployments NAMEDESIREDCURRENTUP-TO-DATEAVAILABLEAGE orcldb111111m wls111111m
kubectl get services NAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE kubernetesClusterIP10.96.0.1<none>443/TCP7d orcldbClusterIP10.97.195.134<none>1521/TCP,5500/TCP10m wlsLoadBalancer10.111.246.133localhost7011:30035/TCP10m
weblogic-oracledb-kubernetes.yaml
內容如下:
apiVersion: v1 kind: Service metadata: name: wls spec: type: LoadBalancer ports: - port: 7011 selector: app: wls --- apiVersion: apps/v1beta2 kind: Deployment metadata: name: wls spec: 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: v1 kind: Service metadata: name: orcldb spec: ports: - port: 1521 name: sqlnet - port: 5500 name: oraclexml selector: app: orcldb --- apiVersion: apps/v1beta2 kind: Deployment metadata: name: orcldb spec: 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 應用
訪問MedRec應用:
http://localhost:7011/medrec

MedRecSplash.png
停止應用
使用Swarm 停止應用
要停止應用容器, 執行:
$ docker-compose down Stopping wls-medrec ... done Stopping orcldb... done Removing wls-medrec ... done Removing orcldb... odone
接下來請檢視 在Docker EE上配置和部署 章節.
使用Kubernetes 停止應用
要停止應用, 執行:
kubectl delete svc orcldb wls service "orcldb" deleted service "wls" deleted
kubectl delete deployments deployment "orcldb" deleted deployment "wls" deleted
Docker EE相關內容
可以看看怎麼配置PV, 其他都可以忽略.
Docker EE上的配置和部署
要在Docker EE 2.0上跟著這篇應用嚮導部署Oracle WebLogic和Oracle Database, 首先要分配幾個合適配置的節點做高可用. 在本例中, 分配了4個例項: 1個UCP管理節點和3個worker容器. UCP可以管理Kubernetes和Swarm編排.
Docker Trusted Registry(DTR) 也安裝在其中一個worker容器中. 這篇嚮導假設UCP和DTR已經安裝和配置好, 可以使用"admin" 賬號和密碼來訪問.
Docker EE Swarm 配置
略
MedRec applications on Weblogic with Oracle Database .
定義 PV(持久化卷)
要在本地捲上部署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:/ORCL volumes: db-oracle: driver: rexray/ebs
修改 {dtr-registry-address}
為真實的DTR或Docker Hub地址.
複製完整內容到剪貼簿. 確保縮排格式沒問題.
通過UCP UI Swarm驗證部署(Docker EE)
-
訪問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應用.UCP-SwarmVerify.png
通過客戶端套件來驗證該部署(Docker EE)
略
通過UCP UI Kubernetes 來驗證部署(Docker EE)
略
使用Swarm停止Docker EE上的應用
略
使用Kubernetes停止Docker EE上的應用
略
Troubleshooting
略