如何制作神通数据库docker镜像

本文介绍了如何在互联网时代利用神通数据库和Docker容器技术进行部署,包括安装神通数据库的最小配置、制作Docker镜像的过程以及启动容器并设置数据库的相关步骤。
摘要由CSDN通过智能技术生成

前言

       在当今互联网时代,数据是企业最宝贵的资产之一。为了更好地管理和利用数据,许多企业选择使用数据库系统来存储和管理数据。而随着容器化技术的发展,越来越多的企业开始将数据库部署在Docker容器中,以提高部署和管理的灵活性和效率。

       神通数据库(oscar)是一款高性能、分布式的数据库系统,具有强大的扩展性和可靠性。本文将介绍如何制作神通数据库的Docker镜像,以便更方便地部署和管理神通数据库。

      在本文中,我们将首先介绍Docker和神通数据库的基本概念,然后详细讲解如何制作神通数据库的Docker镜像,并最终展示如何使用这个镜像来部署神通数据库。希望通过本文的介绍,读者能够更好地了解神通数据库和Docker容器技术,并掌握制作神通数据库Docker镜像的方法。

软件版本
软件版本或者注释
docker版本 25.0.3
神通数据库版本v7.0
系统镜像版本centos 8
DockerfileDockfile文件
createdb.sh数据库启动和建库脚本

开始步骤:

   安装神通数据库

     安装神通数据库,安装的时候可以选择最小安装,这样安装后的数据库文件夹比较小,但是后端的功能还是完整。

安装完后数据库的文件目录如下,因为没有建库,所以整个文件夹不是很大。制作的镜像不会很大。

构建数据库镜像

新建一个文件夹,把整个神通文件夹拷贝进去(/opt/ShenTong),把Dockfile 和createdb.sh文件一起放进去,执行构建命令。 

#构建镜像命令
docker build  -t  signal-stdb -f Dockerfile .

启动神通数据库容器

在启动的过程中,我们可以指定创建数据和端口号,其他的映射端口或者ip ,可自行指定。

--启动命令
docker run -itd --name STDB   --privileged=true   --net=host  -p 端口号:端口号  signal-stdb {库名} {端口号} 

--privileged=true Docker会赋予容器几乎与主机相同的权限

库名不指定默认 OSRDB  
端口号不指定默认  2003


例子:
docker run -itd --name STDB   --privileged=true  --net=host  -p 2008:2008  signal-stdb CSDB 2008


执行启动容器命令,因为启动会自动创建数据库,因此会慢一点,等待创建完毕,查询状态就行。

查看数据库状态:

--查询数据库状态

ps  -ef | grep  oscar

--连接数据库

isql  -d 库名  -p 端口号 -h  ip地址  -U用户名/密码

附件

Dockerfile

from  centos:latest

ENV SZ_OSCAR_HOME=/opt/ShenTong
WORKDIR $SZ_OSCAR_HOME

COPY ShenTong /opt/ShenTong
COPY createdb.sh  /opt/ShenTong
run sed -i '$a SZ_OSCAR_HOME=/opt/ShenTong\nexport SZ_OSCAR_HOME\nPATH=/opt/ShenTong/bin:${PATH}\nexport PATH\nLD_LIBRARY_PATH=/opt/ShenTong/bin:${LD_LIBRARY_PATH}\nexport LD_LIBRARY_PATH'  /etc/profile \
&& source /etc/profile && sed -i '$a source /etc/profile \n export LANG=UTF8' /root/.bashrc

ENTRYPOINT ["/opt/ShenTong/createdb.sh"]

createdb.sh

#!/bin/bash
source /etc/profile

#判断库名是否为空,空默认为OSRDB

if [ -z "$1" ]; then
        dbname=OSRDB
else
        dbname=`echo $1 | awk '{print toupper($0)}'`
fi


#判断端口号是否为空,空默认为2003
if [ -z "$2" ]; then
        PORT1=2003
else
        PORT1=$2
fi


if [ -s /etc/init.d/oscardb_${dbname}d ];then

   /etc/init.d/oscaragentd restart

    num=`ps -ef|grep  "\-o normal"|grep -w $dbname |grep -v grep |wc -l`

  if [ $num -eq 0 ];then

   /etc/init.d/oscardb_${dbname}d start

  fi

else

oscar -e "create database ${dbname} "
wait
oscar -o restrict -d ${dbname}
wait
oscar -o install -d ${dbname}
wait

oscaragent  -i 
wait
oscaragent -p szoscar55
wait

echo "------------------------"
echo ${PORT1}

echo -e "PORT=${PORT1} \nENABLE_HA_SINGLE_ALIVE=true  \nHA_GATEWAY=''  \nHA_LOCAL_NET_DEV_NAME=''  \nHA_LOG_COMPRESS_MIN_BLOCK_NUM=10   \nHA_SERVER_IP_ADDRESS=''   \nHA_SINGLE_ALIVE_KEEP_ELECTION_MS=60000    \nHOTSTANDBY_DATABASE_TYPE=0 " >/opt/ShenTong/admin/${dbname}.conf

wait
/etc/init.d/oscaragentd  start
wait
/etc/init.d/oscardb_${dbname}d start

#isql -d ${dbname}  -p $2 -Usysdba/szoscar55 -c "alter  database archivelog ;"
#echo  "/etc/init.d/oscardb_${dbname}d start" >>/root/.bashrc
fi

# 定义信号处理函数
handle_signal() {
   /opt/ShenTong/bin/isql  -Usysdba/szoscar55  -d ${dbname} -p ${PORT1}  -c 'alter  system;'  
     wait
    /etc/init.d/oscardb_${dbname}d stop
    wait
    /etc/init.d/oscaragentd  stop
}

# 注册信号处理函数
trap 'handle_signal'  SIGTERM SIGKILL SIGUSR1 SIGINT SIGHUP

while true; do
    sleep 1
done


/bin/bash

如有写的不对的地方,欢迎指点。

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值