概述
之前都是用docker去实现一键部署mysql,oracle麻烦很多,dockerfile很不好写,有很多逻辑需要考虑,无意中看到一位大佬marcelo-ochoa的dockerfile,测试了下确实可行,这里分享下给大家。
环境配置
操作系统:ubuntu16.04 TLS
docker Version: 18.09.2
oracle Version: 19.2.0.0.0
1、下载dockerfile
cd /optgit clone https://github.com/frobes/dba_devops.git
![eac879ef068262e60a483379f07a8b2e.png](https://i-blog.csdnimg.cn/blog_migrate/8b9e06bafa26246ad7c24a680dd88024.jpeg)
[root@dba_devops dockerfiles]# lltotal 32drwxr-xr-x 2 root root 4096 Feb 22 08:12 11.2.0.2drwxr-xr-x 2 root root 4096 Feb 22 08:12 12.1.0.2drwxr-xr-x 2 root root 4096 Feb 22 08:12 12.2.0.1drwxr-xr-x 2 root root 4096 Feb 22 08:12 18.3.0drwxr-xr-x 2 root root 4096 Feb 22 08:12 18.4.0drwxr-xr-x 2 root root 4096 Feb 22 08:12 19.2.0-rwxr-xr-x 1 root root 5145 Feb 22 08:12 buildDockerImage.sh[root@dba_devops dockerfiles]# pwd/opt/docker-images/OracleDatabase/SingleInstance/dockerfiles
可以看到是存在19.2.0的dockerfile的,同时检查其安装的安装包文件名
[root@dba_devops 19.2.0]# lltotal 68-rwxr-xr-x 1 root root 1148 Feb 22 08:12 checkDBStatus.sh-rwxr-xr-x 1 root root 905 Feb 22 08:12 checkSpace.sh-rw-r--r-- 1 root root 49 Feb 22 08:12 Checksum.ee-rwxr-xr-x 1 root root 3012 Feb 22 08:12 createDB.sh-rw-r--r-- 1 root root 9204 Feb 22 08:12 dbca.rsp.tmpl-rw-r--r-- 1 root root 6878 Feb 22 08:12 db_inst.rsp-rw-r--r-- 1 root root 3405 Feb 22 08:12 Dockerfile-rwxr-xr-x 1 root root 2526 Feb 22 08:12 installDBBinaries.sh-rwxr-xr-x 1 root root 6526 Feb 22 08:12 runOracle.sh-rwxr-xr-x 1 root root 1015 Feb 22 08:12 runUserScripts.sh-rwxr-xr-x 1 root root 758 Feb 22 08:12 setPassword.sh-rwxr-xr-x 1 root root 932 Feb 22 08:12 setupLinuxEnv.sh-rwxr-xr-x 1 root root 678 Feb 22 08:12 startDB.sh[root@dba_devops 19.2.0]# cat Dockerfile |grep INSTALL_FILE_1 INSTALL_FILE_1="V981623-01.zip" COPY --chown=oracle:dba $INSTALL_FILE_1 $INSTALL_RSP $INSTALL_DB_BINARIES_FILE $INSTALL_DIR/
这里可以看到,安装包是叫V981623-01.zip
2、制作镜像
2.1、拷贝19c安装包后生成镜像
将安装包V981623-01.zip拷贝到该目录下,运行开始安装
cd /opt/docker-images/OracleDatabase/SingleInstance/dockerfiles
./buildDockerImage.sh -v 19.2.0 -e
![52d06468dc02d186cb68264959a8cde2.png](https://i-blog.csdnimg.cn/blog_migrate/dcf21078559093a8afb3505512da5fab.jpeg)
2.2、生成镜像过程:
![ed9aed1e91394eb99a285b53458a11b1.png](https://i-blog.csdnimg.cn/blog_migrate/e840f279bdeb551ea93b44800a936ae5.jpeg)
![03a50d7d69a83b1e5600bc3a287adc2e.png](https://i-blog.csdnimg.cn/blog_migrate/67a59aa8cac281454ed54f63e4635238.jpeg)
2.3、安装完成:
![8b80e49e745d61892f04aebcc4724e48.png](https://i-blog.csdnimg.cn/blog_migrate/b145b1255ca39008616c027a8b67c527.jpeg)
2.4、查看镜像:
docker images
![c34fcf4fff9daeb103b95f8c764c3777.png](https://i-blog.csdnimg.cn/blog_migrate/1bd355ba5fcaa3cdc202380cd35695fd.jpeg)
到上面一步我们的镜像就做好了,下面基本都没什么太大问题。
3、初始化数据库实例
3.1、初始化实例
#docker run --name oracle19c -p 1521:1521 -p 5500:5500 -v /oradata/oracle19c:/opt/oracle/oradata oracle/database:19.2.0-ee
![c6eaa66f65c421db744c760f329b81de.png](https://i-blog.csdnimg.cn/blog_migrate/4b0597daa15bf0228fb7c2cc87ba9b74.jpeg)
![a583572d7b60102aeae65abf396a5368.png](https://i-blog.csdnimg.cn/blog_migrate/e61e22abae985a4eb064a169903409ef.jpeg)
![98a113ea03866bc72b3cf1ab793548aa.png](https://i-blog.csdnimg.cn/blog_migrate/59725c39ac9d21a26c2f723f3c9295da.jpeg)
注,如果“DATABASE IS READY TO USE!”字样已经出现,且后面的log一直停着不动,可以在别的窗口查看container。
3.2、查看容器
docker ps -a
![f5d7458d6c7ff53862cbddb66646d0b6.png](https://i-blog.csdnimg.cn/blog_migrate/400c52409bcea43a20dbbd92822baf49.jpeg)
3.3、检查数据文件
ll /oradata/oracle19c/ORCLCDB
![3cf47f3a208928022ca4fee5cc08b731.png](https://i-blog.csdnimg.cn/blog_migrate/5ac487c7b5c7cb915b11f998fd0e39dd.jpeg)
4、登录主机或者数据库操作
docker ps -a
docker exec -it abe5 /bin/bash
sqlplus sys/1RmJBpJIsmU=1@ORCLCDB as sysdba
SQL> select instance_name,status from v$instance;
![cb580faeab91cfdaeaa250ec1fc81bb6.png](https://i-blog.csdnimg.cn/blog_migrate/9b7c7e0dc1e1ef7d4c42ba23e0769b29.jpeg)
到这里我们的数据库19c就部署好了。
![d9be5ec69fbdca35e9b866acc0f9e4b8.gif](https://i-blog.csdnimg.cn/blog_migrate/9f9aa64abfa2f10239ce19875e819d7d.gif)
前面核心命令就两句:
./buildDockerImage.sh -v 19.2.0 -e
docker run --name oracle19c -p 1521:1521 -p 5500:5500 -v /oradata/oracle19c:/opt/oracle/oradata oracle/database:19.2.0-ee
一直以来都想试着写个dockerfile来一键部署oracle,虽然对于oracle意义可能不是很大,今天参考一下其他大佬的dockerfile后自己修改做了一下,过程还是挺简单的,大家有兴趣也可以研究下dockerfile里面内容。
![3cb9de246a8416f1e14206bff0326da5.gif](https://i-blog.csdnimg.cn/blog_migrate/0f32913e1635e5b43eac5864394d8ec4.gif)