Docker部署帆软报表小试

楼主
我是社区第68482位番薯,欢迎点我头像关注我哦~
1. 前述

疫情期间,公司提前放假了,闲来在家无事想找到事做。前些日子看了一些Docker的学习视频,感觉容器应用运维中真的很方便。于是想试着把Finereport部署到Docker里试试,官方也有安装教程,但实际中也有有一些不同,也存在一些小坑,本文重点介绍一些前期的准备,简单分享一下,不足之还望指正包含。
吐槽:一是编辑器太不方便了,不小心在编辑器外按了退格键,就代表保存之后所写的都没有了;二是修改格式太麻烦了,可能我没用明白,索性就是默认字体吧。

2. 准备


2.1 Linux

CentOS虽说即将停止维护了,用来练习和在中小型项目还是可以的。这都不是目前可考虑的问题,直接到官网下载CentOS8。这两天也接触了一下oracleLinux7,感觉Oracle使用自家的Linux能匹配的更好一些吧,个人臆断。

2.3 Docker

直接安装latest版本

2.4 Oracle Database

DockerHub上没有最新Oralce19c/20c的镜像,只有Oracle 12c(12.2.0.1)的镜像。

oracle12c镜像地址:
docker pullstore/oracle/database-enterprise:12.2.0.1

如果需要使用Oracle19c,可以参考docker一键部署oracle19c这篇文章的介绍。这时有两个小提示,一是构建镜像需要MD5校验,如果没有安装包的MD5,可以在设置跳过;二是运行buildDockerImage.sh需要执行权限。

2.5 Oracle Weblogic Server


为什么不选择Tomcat?
Finereport部署需要tools.jar,高版本的JDK已经没有这个JAR包了。所以想自己搞一个Centos+serJre1.8+Tomcat8的镜像。于是查找资料,编写DockerFile去构建,但部署Finereport的时候总出错,一直提示tools.jar不匹配,搞的没有耐心了,直接放弃。然后选择了weblogic官方镜像(12.2.1.4-200177),自带server-jre,不用自己搞,用起来很方便。

2.6 Finereport


在帆软官网上下载,版本可以选择windows版64位或V10.0服务器部署版。

3. 安装过程


3.1 Docker 安装

第一步  替换centos-base.repo和epel-repl

        1.进入阿里云开发者社区镜像站
  1. https://developer.aliyun.com/mirror/
复制代码

        2.进入CentOS镜像,定位至CentoOS 8,复制如下信息在CentOS中执行。
  1. curl -o/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
复制代码

        3.进入Epel镜像,定位至epel(RHEL 8),复制如下信息在CentOS中执行。   
  1. yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch
复制代码

        4.将 repo 配置中的地址替换为阿里云镜像站地址,复制如下信息分别在CentOS中执行。
  1. sed -i's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|'/etc/yum.repos.d/epel*

  2. sed -i's|^metalink|#metalink|' /etc/yum.repos.d/epel*
复制代码

第二步  卸载旧版本
  1. yum remove docker-ce docker-cedock-cli
复制代码

第三步
  下载Docker repo文件
  1. curl -o/etc/yum.repos.d/docker-cd.repo https://download.docker.com/linux/centos/docker-ce.repo
复制代码

第四步  安装基础包
  1. yum install -y yum-utils device-mapper-persistent-data lvm2
复制代码

第五步
  安装containerd.io组件
  1. yum install containerd.io
复制代码

        如果CentOS系统存在podman,须要卸载后再安装。
  1. yum erase podman buildah
复制代码

第六步
  安装Docker Engin -community
  1. yum install docker-ce docker-ce-cli
复制代码

第七步
  运行Docker
  1. systemctl start docker
复制代码

第八步
  配置Docker镜像加速器(阿里云)

        操作路径:注册阿里云账号 - 进入控制台 - 容器镜像服务 - 镜像工具 - 镜像加速器 - 操作文档

        修改daemon配置文件/etc/docker/daemon.json来使用加速器
  1. {
  2.         "registry-mirrors":["https://55qb44cs.mirror.aliyuncs.com"]
  3. }
复制代码

        重新加载服务配置文件
  1. systemctl daemon-reload
复制代码

         重新启动
  1. systemctl restart docker
复制代码

3.3 Docker 网络模型


Docker有四种网络模型,分别是bridge、host、container、none,bridge是默认的网络模型。在使用中可以创建一个bridge网络。一是bridge提供了更好的网络隔离性和相互操作性;二是同一个自定义bridge下的容器可以互相访问所有端口,不需要暴露端口到外部;三是容器之间可以自动解析主机名和ip对应关系。

         示例:
  1. docker network create -d bridge --subnet 172.20.0.0/24 --gateway 172.20.0.1 network
复制代码


3.4 Oracle19c 安装


第一步  拉取镜像
  1. docker pull store/oracle/database-enterprise:12.2.0.1
复制代码

第二步  设置持久化的本地目录

  1. mkdir /usr/local/oracle19c/oradata
  2. mkdir /usr/local/oracle19c/scripts
复制代码

第三步  创建数据容器


        docker 运行命令:
  1. docker run --name <container name> \
  2. -p <host port>:1521 -p <host port>:5500 \
  3. -e ORACLE_SID=<your SID> \
  4. -e ORACLE_PDB=<your PDB name> \
  5. -e ORACLE_PWD=<your database passwords> \
  6. -e ORACLE_CHARACTERSET=<your character set> \
  7. -v [<host mount point>:]/opt/oracle/oradata \
  8. oracle/database:19.3.0-ee
复制代码

       参数说明:        
        --name:       
                  The name of the container (default: auto generated)
       -p:            
                  The port mapping of the host port to the container port.
                  Two ports are exposed: 1521 (Oracle Listener), 5500 (OEM Express)
        -e ORACLE_SID:
                  The Oracle Database SID that should be used (default: ORCLCDB)
       -e ORACLE_PDB:
                  The Oracle Database PDB name that should be used (default: ORCLPDB1)
       -e ORACLE_PWD:
                  The Oracle Database SYS, SYSTEM and PDB_ADMIN password (default: auto generated)
        -e ORACLE_CHARACTERSET:
                  The character set to use when creating the database (default: AL32UTF8)
        -v /opt/oracle/oradata
                  The data volume to use for the database.
                  Has to be writable by the Unix "oracle" (uid: 54321) user inside the container!
                  If omitted the database will not be persisted over container recreation.
       -v /opt/oracle/scripts/startup | /docker-entrypoint-initdb.d/startup
                  Optional: A volume with custom scripts to be run after database startup.
                  For further details see the "Running scripts after setup and on startup" section below.
        -v /opt/oracle/scripts/setup | /docker-entrypoint-initdb.d/setup
                  Optional: A volume with custom scripts to be run after database setup.
                  For further details see the "Running scripts after setup and on startup" section below.

        示例:
  1. docker run --name oracle19c --net network -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=oracle -v /usr/local/oracle/myScripts:/opt/oracle/scripts/startup -v /usr/local/oracle/oradata:/opt/oracle/oradata oracle/database:19.3.0-ee
复制代码

        说明:
  1. 1. 指定ORACLE_PWD为oracle不符合密码规范,会有三个警告;如不设置密码,在屏幕中的提示信息中查找随机密码,在这里建议设置;
  2. 2. 构建容器前,要为/usr/local/oracle目录设置权限;
  3. 3. 构建过程较慢,期间会有一个错误和两个警告,忽略不计。直到“DATABASE IS READY TO USE!”字样已经出现,且后面的log一直停着不动,可以在别的窗口查看container;
复制代码

3.5 Weblogic 安装

第一步  拉取镜像

  1. docker pull store/oracle/weblogic:12.2.1.4-dev-200117
复制代码

第二步  设置持久化的本地目录

  1. mkdir /usr/local/weblogic/oracle/properties:/u01/oracle/properties
  2. mkdir /usr/local/weblogic/oracle/user_projects:/u01/oracle/user_projects
复制代码
提示:以上两个目录要赋予读写执行权限

第三步  设置用户名和密码的properties文件
        
用户名和密码必须以域属性位于本地目录中的文件,您将在Docker运行时使用-v选项映射该文件。属性文件使脚本能够为WebLogic管理服务器配置正确的身份验证。创建"domain.properties"文件,拷贝至"/usr/local/weblogic/oracle/properties:/u01/oracle/properties"目录下,文件内容如下:
  1. username=myadminusername
  2. password=myadminpassword
复制代码
提示:将myadminusername和myadminpassword改为设定的密码。

第四步  构建容器
  1. docker run -d --name weblogic12c -p 7001:7001 -p 9002:9002 -v /usr/local/weblogic/oracle/properties:/u01/oracle/properties -v /usr/local/weblogic/oracle/user_projects:/u01/oracle/user_projects -e ADMINISTRATION_PORT_ENABLED=true -e DOMAIN_NAME=base_domain store/oracle/weblogic:12.2.1.4-200117
复制代码
提示:base_domain可自行设置

第五步  运行容器
  1. https://IP:9002/console
复制代码
提示:一是注意地址是https,不是http;二是容器启动和重启需要时间,网址不能打开稍后再试;三是用户名和密码登陆不进去,检查domain.properties文件内容和构建容器输入是否正确。


4 部署过程


4.1 Oracle部署


4.1.1 连接数据

数据库容器运行后,可进入容器内部执行sqlplus和查询操作,检查数据库是否正确运行。
  1. docker exec -it oracle19c /bin/bash
复制代码
  1. sqlplus /nolog

  2. conn sys/oracle@ORCLCDB as sysdba

  3. select count(*) from v$process;
复制代码


4.1.2 数据库连接



本地Net服务名设置,分别配置ORCLCDB和ORCLPDB。



至于使用CDB还是PDB,那就看各自的需求。如果就是测试为了方便使用PDB就可以了,数据表空间只需要在ORCLPDB1创建就可以了,CBD创建表空间后还需要在PCD中也创建一个。

4.1.3 数据库连接工具选择

试过Toad、Plsql、DataGrip三款工具,总体还是觉得Plsql用起来顺手。





4.1.4 创建表空间

        CDB 建立用户表空间:
  1. create tablespace finedb datafile '/opt/oracle/oradata/ORCLCDB/finedb01' size 500m autoextend on next 50m extent management local uniform size 256k;
  2. create tablespace finedb datafile '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/finedb01' size 500m autoextend on next 50m extent management local uniform size 256k;
复制代码
        PDB 建立用户表空间:
  1. create tablespace finedb datafile '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/finedb01' size 500m autoextend on next 50m extent management local uniform size 256k;
复制代码
        创建临时表空间:
  1. create temporary tablespace finedb_tmp tempfile '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/finedb_temp01' size 50m autoextend on next 50m maxsize 20480m extent management local;
复制代码


4.1.5 创建用户并赋权


  1. create user finedb identified by finedb default tablespace finedb;

  2. grant connect,resource to finedb;
  3. grant create sequence to finedb;
  4. grant create  table to finedb;
  5. grant unlimited tablespace to finedb;
  6. grant create  procedure to finedb;
  7. grant create  view to finedb;
  8. grant create  Trigger to finedb
复制代码


4.2 Weblogic 部署


参照帆软官方文档部署有两种方式,一种是文件夹部署,另一种是war部署,具体部署就参照官方文档。在这里新手建议文件夹部署,操作起来更直观一些,war部署更新较慢,但文件夹部署需要 Weblogic版本在12.2.1.3 及以上。WebLogic 服务器文件夹部署

4.2.1 tools.jar

文件夹部署是需要拷贝tool.jar的,镜像weblogic:12.2.1.4-dev-200117中是包含jdk的,所以需要将/u01/jdk/jre/lib目录下的tools.jar复制到/u01/oracle/wlserver/server/lib目录下。

  1. cp /u01/jdk/lib/tools.jar /u01/oracle/wlserver/server/lib
复制代码

4.2.2 ojdbc.jar


帆软自带连接Oracle数据库jar包是ojdbc14,因为这里用的是Oracle19c,所以这个需要换成ojdbc8或ojdbc10都可以,直接去官网下载对应的ojdbc就可以了。JDBC and UCP Downloads page

将这个jar包拷贝至/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/webroot/WEB-INF/lib,删除ojdbc14,在weblogic更新项目。简单操作,可以先把这个把包替换好再部署项目。

提示:记得帆软官方文档修改内存,否则可能会出现更新错误。


4.3 FineReport部署

4.3.1 访问及初始化


weblogic和oracle都部署好后,访问finereport进行初始化设置。访问地址:
  1. http://IP:7001/webroot/decision
复制代码

建议:这里建议先选择内置数据库,外部数据库可以在登陆平台后再进行配置。


4.3.2 外部数据库配置




注意:访问平台的IP是CentOS的IP,配置数据库的IP是容器的IP,切记!!!



编辑于 2021-2-18 11:11  
分享扩散:

沙发
发表于 2021-3-8 14:53:46
非常棒,学习了
板凳
发表于 2021-7-6 14:36:47
docker 部署时,MAC地址可能会经常变化。 企业版,授权是怎么管理的?每次部署后都要重新申请吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

3回帖数 6关注人数 8339浏览人数
最后回复于:2021-7-6 15:13

返回顶部 返回列表