搭建标题中的两个数据库,同样采用docker的搭建方式,说时候docker实在是好用,搭建起来的服务完全一个个的独立,相互之间没有任何影响,镜像很多都是现成的,比较稳定的镜像,唯一的缺点其实就是占用存储空间大,但是这点其实也没有什么,毕竟现场存储价格便宜,使用简单方便,存储大些也是可以接受的。我搭建使用的服务器是Centos7。
1、前提
docker部署容器首先得安装好docker软件,然后检测是否安装了docker compose,有些版本用docker-compose,有些用docker compose,有些区别,需要自行去确定。然后确定docker源是否可用,现在好多源都不能用了,需要寻找一个可用的docker源,如果docker源不可用,那么到时候拉取镜像的时候就会失败。
2、docker-compose文件
按照如下的方式编辑好docker compose的yml文件,内容如下所示:docker-compose.yml
bash
services:
# Oracle 服务配置
oracle:
image: gvenzl/oracle-xe:18.4.0 # 使用轻量级的Oracle XE版本
container_name: oracle_db
network_mode: bridge
user: "54321:54321"
environment:
- ORACLE_PASSWORD=jelly!123 # SYS, SYSTEM和PDBADMIN用户的密码
- ORACLE_DATABASE=ORCLCDB # 数据库名称
- ORACLE_PDB=ORCLCDB1 # 可插拔数据库名称
ports:
- "1521:1521" # Oracle默认端口
- "5500:5500" # EM Express端口
volumes:
- ./oracle_data:/opt/oracle/oradata # 数据持久化卷
restart: unless-stopped
# SQL Server 服务配置
sqlserver:
image: mcr.microsoft.com/mssql/server:2019-latest
container_name: sqlserver_db
network_mode: bridge
user: root
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=jelly!123 # 密码必须符合复杂性要求
- MSSQL_PID=Express # 使用Express版本,可选:Developer, Enterprise等
ports:
- "1433:1433" # 映射主机端口到容器端口
volumes:
- ./sqlserver_data:/var/opt/mssql # 数据持久化卷
restart: unless-stopped # 除非手动停止,否则总是重启容器
从yml文件可以看到我两个数据库的登录密码都是jelly!123,后面在验证数据的时候就使用该密码进行数据的连接和登录测试。
3、创建容器
根据上面的yml文件,在同一级别目录创建两个文件夹,分别为oracle_data和sqlserver_data,然后使用命令将两个目录的权限置为777,命令操作如下:
bash
chmod -R 777 oracle_data
chmod -R 777 sqlserver_data
上面的操作是为了让映射的目录到时候有读写权限,测试为了方便设置成777,如果是生产环境根据实际情况设置成755或者其他权限,也需要保证容器到时候对映射目录有读写权限。然后再yml文件的的同级目录下面执行命令:docker compose up -d即可创建容器,创建容器需要拉取镜像,可能比较慢,可能会失败,如果失败排查docker镜像源是否可以正常访问。
运行完成后入下面所示,可以看到对应的镜像和运行的容器
对应的镜像:可以看到这两个镜像都比较大,大小都是上G

运行的容器:

4、验证数据库
如果上面创建容器正常的话就可以使用数据库工具或者写个脚本代码连接数据库看数据库是否可以正常连接,我使用的是数据库工具,用的是DBeaver,
4.1 验证sqlserver数据库:

按照上面的配置信息连接配置,ip地址是你宿主机的ip地址,密码就是用yml文件配置的密码,用户名填sa而不是yml文件的root,很奇怪,估计是该数据库自己的特性,如果有同学知道为什么可以子啊评论区留言,指导指导。配置好后,点击左边的测试连接:如果连接正常则会显示如下界面:

4.2 验证oracal数据库
验证也是使用DBeaver,使用如下的配置连接:

用户名使用的是system,估计和上面的sqlserver一样,都是默认的账户,配置好后,点击左边的测试连接,如果配置正常,会有如下的弹窗信息:

到此两个数据库的容器创建和连接测试都完成了,可以进行数据库的使用了。