千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,注意:如果应用工程没有变动, 那oracle服务重启后, 应用会自动重新连接, 服务也会恢复正常.但是如果应用工程在启动时oracle未运行, 数据库连接失败会直接导致工程启动失败, oracle重新
千家信息网最后更新 2026年11月01日docker部署文档(三)-关于oracle容器重启后导致应用容器启动失败的解决办法

注意:

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

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

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

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

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

#!/bin/bashsysctl -pchown oracle:oinstall /opt/oraclesu - oracle << EOFlsnrctl  startsqlplus "/as sysdba" << EOFstartupEOF## 上面的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}


容器 服务 应用 脚本 工程 数据 数据库 应用工程 运行 宿主 宿主机 情况 文件 顺序 两个 内容 内核 参数 服务器 符号 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技会 重庆互联网络科技 北京互联网科技有限公司 互联网金融科技平台 互联网 视角下的科技创新 互联网科技的未来发展 科技赋能互联网健康 恒银科技与互联网金融 语蝶互联网科技有限公司 互联网科技和信息 互联网行业科技股 翼展科技 首家互联网医院 威龙国际互联网科技公司 四川慕妮娅互联网科技有限公司 互联网领先科技宣传片 新氧科技和美国互联网有关系吗 互联网科技企业商标注意事项 艺电能源互联网科技有限公司招聘 好易买互联网科技 如何强化互联网金融科技 互联网科技巨头监管 互联网医疗科技 壕鑫互联网络科技 互联网金融和金融科技 镁科技互联网资讯平台 剑昆互联网络科技有限公司临桂 浙南科技城互联网大厦建设工程 城市宝互联网科技有限公司 广州百诚互联网科技有限公司官网 互联网科技企业商标注意事项
0