docker部署文档(三)-关于oracle容器重启后导致应用容器启动失败的解决办法
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,注意:如果应用工程没有变动, 那oracle服务重启后, 应用会自动重新连接, 服务也会恢复正常.但是如果应用工程在启动时oracle未运行, 数据库连接失败会直接导致工程启动失败, oracle重新
千家信息网最后更新 2025年12月02日docker部署文档(三)-关于oracle容器重启后导致应用容器启动失败的解决办法1. 修改oracle容器的
注意:
如果应用工程没有变动, 那oracle服务重启后, 应用会自动重新连接, 服务也会恢复正常.
但是如果应用工程在启动时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安全错误
数据库的锁怎样保障安全
泰拉瑞亚加入服务器
sql数据库减肥
网络安全执法整改
如何拉重复数据库
软件开发的工作分解结构
上海华腾软件开发工资几号发
英国网络安全技术
淮安app软件开发的报价
网络安全手抄报四年级怎么画
工企数据库设置面板
澳门特区网络安全
计算机网络技术专业方向
gbase8a数据库驱动
云数据库延迟
创建数据库结构就是要干什么
中兴软件开发历年笔试题
数据库运动管理系统er图
安徽信息软件开发供应商
主流的数据库技术
筑牢税务网络安全防线
svn建立数据库
软件开发用华为笔记本可以吗
数据库主从选举
德国网络安全薪水
网络技术运维课程
上海正规软件开发服务以客为尊
端游数据库
欧洲服务器租用
网络安全考试大题
数据库复制功能吗