Docker部署帆软报表小试
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.进入阿里云开发者社区镜像站https://developer.aliyun.com/mirror/
2.进入CentOS镜像,定位至CentoOS 8,复制如下信息在CentOS中执行。curl -o/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
3.进入Epel镜像,定位至epel(RHEL 8),复制如下信息在CentOS中执行。 yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch
4.将 repo 配置中的地址替换为阿里云镜像站地址,复制如下信息分别在CentOS中执行。sed -i's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|'/etc/yum.repos.d/epel*
和
sed -i's|^metalink|#metalink|' /etc/yum.repos.d/epel*
第二步 卸载旧版本yum remove docker-ce docker-cedock-cli
第三步 下载Docker repo文件
curl -o/etc/yum.repos.d/docker-cd.repo https://download.docker.com/linux/centos/docker-ce.repo
第四步 安装基础包
yum install -y yum-utils device-mapper-persistent-data lvm2
第五步 安装containerd.io组件
yum install containerd.io
如果CentOS系统存在podman,须要卸载后再安装。
yum erase podman buildah
第六步 安装Docker Engin -community
yum install docker-ce docker-ce-cli
第七步 运行Dockersystemctl start docker
第八步 配置Docker镜像加速器(阿里云)
操作路径:注册阿里云账号 - 进入控制台 - 容器镜像服务 - 镜像工具 - 镜像加速器 - 操作文档
修改daemon配置文件/etc/docker/daemon.json来使用加速器
{
"registry-mirrors":
}
重新加载服务配置文件
systemctl daemon-reload
重新启动
systemctl restart docker
3.3 Docker 网络模型
Docker有四种网络模型,分别是bridge、host、container、none,bridge是默认的网络模型。在使用中可以创建一个bridge网络。一是bridge提供了更好的网络隔离性和相互操作性;二是同一个自定义bridge下的容器可以互相访问所有端口,不需要暴露端口到外部;三是容器之间可以自动解析主机名和ip对应关系。
示例:
docker network create -d bridge --subnet 172.20.0.0/24 --gateway 172.20.0.1 network
3.4 Oracle19c 安装
第一步 拉取镜像
docker pull store/oracle/database-enterprise:12.2.0.1
第二步 设置持久化的本地目录
mkdir /usr/local/oracle19c/oradata
mkdir /usr/local/oracle19c/scripts
第三步 创建数据容器
docker 运行命令:
docker run --name \
-p :1521 -p :5500 \
-e ORACLE_SID= \
-e ORACLE_PDB= \
-e ORACLE_PWD= \
-e ORACLE_CHARACTERSET= \
-v /opt/oracle/oradata \
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.
示例:
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. 指定ORACLE_PWD为oracle不符合密码规范,会有三个警告;如不设置密码,在屏幕中的提示信息中查找随机密码,在这里建议设置;
2. 构建容器前,要为/usr/local/oracle目录设置权限;
3. 构建过程较慢,期间会有一个错误和两个警告,忽略不计。直到“DATABASE IS READY TO USE!”字样已经出现,且后面的log一直停着不动,可以在别的窗口查看container;
3.5 Weblogic 安装
第一步 拉取镜像
docker pull store/oracle/weblogic:12.2.1.4-dev-200117
第二步 设置持久化的本地目录
mkdir /usr/local/weblogic/oracle/properties:/u01/oracle/properties
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"目录下,文件内容如下:
username=myadminusername
password=myadminpassword提示:将myadminusername和myadminpassword改为设定的密码。
第四步 构建容器
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可自行设置
第五步 运行容器
https://IP:9002/console提示:一是注意地址是https,不是http;二是容器启动和重启需要时间,网址不能打开稍后再试;三是用户名和密码登陆不进去,检查domain.properties文件内容和构建容器输入是否正确。
4 部署过程
4.1 Oracle部署
4.1.1 连接数据
数据库容器运行后,可进入容器内部执行sqlplus和查询操作,检查数据库是否正确运行。
docker exec -it oracle19c /bin/bashsqlplus /nolog
conn sys/oracle@ORCLCDB as sysdba
select count(*) from v$process;
4.1.2 数据库连接
本地Net服务名设置,分别配置ORCLCDB和ORCLPDB。
141957
至于使用CDB还是PDB,那就看各自的需求。如果就是测试为了方便使用PDB就可以了,数据表空间只需要在ORCLPDB1创建就可以了,CBD创建表空间后还需要在PCD中也创建一个。
4.1.3 数据库连接工具选择
试过Toad、Plsql、DataGrip三款工具,总体还是觉得Plsql用起来顺手。
141958
4.1.4 创建表空间
CDB 建立用户表空间:
create tablespace finedb datafile '/opt/oracle/oradata/ORCLCDB/finedb01' size 500m autoextend on next 50m extent management local uniform size 256k;
create tablespace finedb datafile '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/finedb01' size 500m autoextend on next 50m extent management local uniform size 256k; PDB 建立用户表空间:
create tablespace finedb datafile '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/finedb01' size 500m autoextend on next 50m extent management local uniform size 256k; 创建临时表空间: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 创建用户并赋权
create user finedb identified by finedb default tablespace finedb;
grant connect,resource to finedb;
grant create sequence to finedb;
grant create table to finedb;
grant unlimited tablespace to finedb;
grant create procedure to finedb;
grant create view to finedb;
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目录下。
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进行初始化设置。访问地址:
http://IP:7001/webroot/decision
建议:这里建议先选择内置数据库,外部数据库可以在登陆平台后再进行配置。
4.3.2 外部数据库配置
141974
注意:访问平台的IP是CentOS的IP,配置数据库的IP是容器的IP,切记!!!
编辑于 2021-2-18 11:11