docker部署文档(三)-关于oracle容器重启后导致应用容器启动失败的解决办法
admin
2023-03-03 03:20:50
0

注意:

  1. 如果应用工程没有变动, 那oracle服务重启后, 应用会自动重新连接, 服务也会恢复正常.

  2. 但是如果应用工程在启动时oracle未运行, 数据库连接失败会直接导致工程启动失败, oracle重新运行后也无法恢复, 只能重启应用工程.

为实现服务器启动 -> docker服务启动 -> oracle容器启动 -> oracle服务启动 -> 应用容器启动的顺序保持不变. 以及实现docker服务启动后, 添加防火墙规则允许容器内部访问宿主机, 需要做如下修改.

1. 修改oracle容器的init.sh脚本

oracle容器中, /root/init.sh脚本原来是使sysctl内核参数及ulimit生效的, 现在修改如下

#!/bin/bashsysctl -p
chown oracle:oinstall /opt/oracle
su - oracle << EOF
lsnrctl  start
sqlplus "/as sysdba" << EOF
startup
EOF## 上面的EOF将被两个'<<'符号共用.echo 'complete...'

oracle容器启动后没有运行服务, 进入到容器中, 执行这个脚本就可以启动oracle了.

2. 实现docker服务启动后按顺序启动数据库与应用容器

编辑/usr/lib/systemd/system/docker.service文件(这是一个类.ini的配置文件). 在[Service]块中添加如下行

ExecStartPost=/bin/bash /root/onDockerStart.sh

ExecStartPost表示在docker服务启动后执行的操作, 上述行表示在docker服务启动后, 执行onDockerStart.sh脚本. 脚本内容如下

#!/bin/bash## 解除容器内部访问宿主机的限制## 有些情况下可能不存在INPUT_direct链iptables -I INPUT_direct -s 172.21.0.0/16 -j ACCEPT || iptables -I INPUT -s 172.21.0.0/16 -j ACCEPT## 启动oracleoracle_cid=$(docker ps | grep oracle-final | awk '{print $1}')
docker exec $oracle_cid bash /root/init.shexit 0

对于应用与数据库分离的情况, 只要保证数据库已经启动, 然后重启启动{cas,skydata-se,drgs,hdc-manager,etlloader}这些容器就可以了.

docker stop|start {cas,skydata-se,drgs,hdc-manager,etlloader}


上一篇:初始化脚本

下一篇:docker部署文档(二)

相关内容

热门资讯

最新引进“红豆牛牛.怎么装挂?... 有 亲,根据资深记者爆料红豆牛牛是可以开挂的,确实有挂(咨询软件无需打开...
重磅消息“越乡游义乌麻将.有挂... 家人们!今天小编来为大家解答越乡游义乌麻将透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪...
【第一财经】“家乡大贰.到底有... 有 亲,根据资深记者爆料家乡大贰是可以开挂的,确实有挂(咨询软件无需打开...
今日重大消息“天天乐棋牌.有没... 您好:天天乐棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游...
玩家分享攻略“杭州麻将.到底有... 您好:杭州麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
今日重大通报“战皇炸金花.辅助... 有 亲,根据资深记者爆料战皇炸金花是可以开挂的,确实有挂(咨询软件无需打...
玩家最新攻略“推大石28杠.究... 网上科普关于“推大石28杠有没有挂”话题很是火热,小编也是针对推大石28杠作*弊开挂的方法以及开挂对...
“创新硅巷·集贤东城”全国人工... 央广网北京12月22日消息(记者 朱冠安)12月22日,由北京市东城区人民政府指导,东城区国有资本运...
七章二十九条三大核心内容 三部... 本报记者 杜雨萌 12月20日,国家发展改革委、市场监管总局、国家网信办联合发布《互联网平台价格行为...
【今日要闻】“丫丫衡阳字牌.辅... 您好:丫丫衡阳字牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款...