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部署文档(二)

相关内容

热门资讯

农田边毒水直流,比排污更刺眼的... 5月7日,总台《焦点访谈》曝光了徐州贾汪区农谷大道路边沟存在水体污染问题。全长12公里的路边沟满是污...
28岁女子坠亡,施工方谎报 近日,深圳龙岗区应急管理局公布了《龙岗龙城香港中文大学(深圳)医学院项目Ⅰ标“12·26”一般高处坠...
中国没有表演场地,高市早苗不必... 【文/观察者网专栏作者 吕超】56年前,时任西德总理的勃兰特在华沙犹太隔离区起义纪念碑前自发下跪,因...
卢希望当选为信阳市人民政府市长 信阳市第六届人民代表大会公告(第十九号)信阳市第六届人民代表大会第五次会议于2026年5月8日选举卢...
中坚科技及董事长被出具警示函 【大河财立方消息】5月8日消息,浙江证监局对浙江中坚科技股份有限公司及相关人员采取出具警示函措施的决...
今年河南首场高温来袭!淮河以北... 今年首场高温来袭受高空西北气流控制,近期我省以晴好天气为主,由于太阳辐射较强,全省将进入快速升温通道...
极氪回应“低价代购极氪新车”信... 【大河财立方消息】5月8日,极氪法务部发布关于保障用户购车安全及权益的重要提醒。极氪表示,“关注到网...
云南燃气灶维修价格表 燃气灶在日常使用中,由于长期受到高温和燃气的腐蚀,会出现各种故障,如火力不足、起火困难、火苗不稳等问...
涉及眼镜、电视、耳机等 人工智... 工业和信息化部、国家市场监督管理总局、商务部等部门今天(5月8日)联合发布《人工智能终端智能化分级》...
上门维修电视价格表 上门维修电视价格表因地区、品牌、型号等情况而异,以下是一般参考价格,仅供参考: 1. 电视开机无信...