在Docker中部署Oracle Database 12.2.0.2和Weblogic 12.2.1.2

1. 登录Docker官网(www.docker.com)

登录docker商店获取Oracle Database和Weblogic的镜像

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: code501
Password: 
如果出现:Login Succeeded则登录成功
如果出现:Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password(失败)

解决方法:

  • 配置Docker的http代理:https://docs.docker.com/engine/admin/systemd/#httphttps-proxy
  • 配置daemon.json

2. Pull database-enterprise Images

# docker pull 10.128.222.245:5000/database-enterprise:12.2.0.2

下载成功:

#docker pull 10.128.222.245:5000/database-enterprise:12.2.0.2 12.2.0.2: Pulling from database-enterprise Digest: sha256:4a6ce8480d5e0aa0dd798564a5340fbfc45033a26468745482457d92008195a1 Status: Downloaded newer image for 10.128.222.245:5000/database-enterprise:12.2.0.2

3. 运行Oracle数据库容器

使用docker run命令运行容器,-p参数是将容器端口映射到外部,--name 指定容器的名称。指定容器名称可以通过该名称引用该容器,而不是通过它随机生成的id。

查看本地镜像

$ docker images

运行(点击跳转):

  • 创建配置文件db_env.dat,该配置文件可以定义数据库名,密码,域和扩展包
####################################################################
## Copyright(c) Oracle Corporation 1998,2016. All rights reserved.##
##                                                                ##
##                   Docker OL7 db12c dat file                    ##
##                                                                ##
####################################################################

##------------------------------------------------------------------
## Specify the basic DB parameters
##------------------------------------------------------------------

## db sid (name)
## default : ORCL
## cannot be longer than 8 characters

DB_SID=OraDoc

## db passwd
## default : Oracle

DB_PASSWD=LetsDocker

## db domain
## default : localdomain

DB_DOMAIN=my.domain.com

## db bundle
## default : basic
## valid : basic / high / extreme 
## (high and extreme are only available for enterprise edition)

DB_BUNDLE=basic

## end
  • 创建容器
$ docker run -d --env-file ./db_env.dat -p 1527:1521 -p 5507:5500 -it --name dockerDB --shm-size="8g" store/oracle/database-enterprise:12.1.0.2

注:

$ docker run -d --env-file  -p :1521 -p :5500 -it --name  --shm-size="" 

Parameters:
    is the path to the environment file you created using above example. 
    is the port on host machine to map the container's 1521 port (listener port).
    is the port on host machine to map the container's 5500 port (http service port).
    is the container name you want to create.
    is the memory size for the container to run. The minimum requirement is 4GB (--shm-size="4g").
    is the image that you use to create a container.

进入容器:

$ docker exec -it  /bin/bash
  • 日志:

第一次构建数据库大约需要5至8分钟,日志保存在容器内的/home/oracle/setup/log文件中 检查数据库设置是否成功,检查日志文件“ /home/oracle/setup/log/setupDB.log”。如果显示“is shown, the database setup was successful.”,则数据库安装成功。启动日志“/home/oracle/setup/log/startupDB.log”

4.通过.setPassword.sh重置密码

新建setPassword.sh文件

#!/bin/bash
# LICENSE CDDL 1.0 + GPL 2.0
#
# Copyright (c) 1982-2016 Oracle and/or its affiliates. All rights reserved.
# 
# Since: November, 2016
# Author: [email protected]
# Description: Sets the password for sys, system and pdb_admin
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
# 

ORACLE_PWD=$1
ORACLE_SID="`grep $ORACLE_HOME /etc/oratab | cut -d: -f1`"
ORACLE_PDB="`ls -dl $ORACLE_BASE/oradata/$ORACLE_SID/*/ | grep -v pdbseed | awk '{print $9}' | cut -d/ -f6`"
ORAENV_ASK=NO
source oraenv

sqlplus / as sysdba << EOF
      ALTER USER SYS IDENTIFIED BY "$ORACLE_PWD";
      ALTER USER SYSTEM IDENTIFIED BY "$ORACLE_PWD";
      ALTER SESSION SET CONTAINER=$ORACLE_PDB;
      ALTER USER PDBADMIN IDENTIFIED BY "$ORACLE_PWD";
      exit;
EOF

例:将密码更改为:LetsDocker

$ docker exec my_db ./setPassword.sh LetsDocker

Weblogic

1、从私有仓库下载weblogic的Docker镜像和扩展包

webloggic镜像已经从docker商店下载并上传到了私有仓库(10.128.222.245)中

$ docker pull 10.128.222.245:5000/store/oracle/weblogic:12.2.1.2

将12212-oradb-medrec文件夹上传到本地,并下载”fmw_12.2.1.2.0_wls_supplemental_quick_Disk1_1of1.zip“文件到该目录下。

2、编辑"12212-oradb-medrec/container-scripts/oracledatabase.properties"文件

设置Oracle Thin XA驱动程序,数据库URL,用户和密码以连接到我们之前创建的Oracle数据库容器

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:@//OracleDatbaseIP:1521/ORCLCDB
dsusername=system
dspassword=LetsDocker
dstestquery=SELECT * FROM DUAL
dsmaxcapacity=1

2、编辑"12212-oradb-medrec"文件夹下的Dockerfile文件

运行Docker images命令查看本地镜像的weblogic的REPOSITORY

docker images
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE

10.128.222.245:5000/store/oracle/weblogic              12.2.1.2            0f56fc2fbf56        3 weeks ago         1.12 GB
10.128.222.245:5000/store/oracle/database-enterprise   12.1.0.2            9410a79c6531        3 weeks ago         5.27 GB

编辑Dockerfile并将FROM行改为:10.128.222.245:5000/store/oracle/weblogic

3、构建"12212-oradb-medrec"镜像

进入"12212-oradb-medrec"文件夹,并运行:

$ docker build -t 12212-oradb-medrec . 

镜像构建完成后使用docker images查看本地镜像,会发现多了一个"12212-oradb-medrec"镜像

REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
12212-oradb-medrec                                     latest              f32f0488dffd        6 hours ago         1.5 GB
10.128.222.245:5000/store/oracle/weblogic              12.2.1.2            0f56fc2fbf56        3 weeks ago         1.12 GB
10.128.222.245:5000/store/oracle/database-enterprise   12.1.0.2            9410a79c6531        3 weeks ago         5.27 GB

4、创建并运行MedRec Docker容器

$ docker run -d -it -p 7011:7011 12212-oradb-medrec

查看运行进度并获取容器的IP地址

$ docker logs -f  

通过http://10.128.222.247:7011/console,来验证Oracle database。

账号:weblogic
密码:welcome1

验证Weblogic应用

地址:http://10.128.222.247:7011/medrec/

你可能感兴趣的:(Docker,DockerSwarm,Oracle,Weblogic)