当前位置: 首页 > news >正文

【Docker】从零开始:18.使用Dockerfile构造自己的KingbaseES数据库镜像

【Docker】从零开始:17.使用Dockerfile构造自己的数据库镜像

  • 新建一个自定义目录并创建Dockerfile文件
  • 上传需要的文件到自定义目录下
    • 注意
    • docker-circle-init.sh文件内容
    • password 内容
  • 开始打包
    • 注意
    • 打包完成后执行
  • 尝试用工具连接数据库

kingbase.tar.gz 包过大我就上传至百度网盘
下载地址如下:
链接:https://pan.baidu.com/s/1AzqXIKKCOX86U4c8KT5-UA?pwd=tori

新建一个自定义目录并创建Dockerfile文件

mkdir /myfiles
cd /myfiles
vi Dockfiles

Dockfiles首字母必须大写
Dockerfile内容如下

FROM centos:7
MAINTAINER circle-dba@163.com#添加用户
RUN groupadd kingbase && useradd -g kingbase -m -d /opt/kingbase -s /bin/bash kingbase
#数据库文件目录
RUN mkdir -p /opt/kingbase#配置数据库的安装路径
ENV KINAGBASE_INSTALL_PATH /opt/kingbase #安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装zip工具
RUN yum -y install unzip# 拷贝数据库文件压缩包初始化密码文件及初始化脚本到对应目录下
ADD kingbase.tar.gz $KINAGBASE_INSTALL_PATH/kingbaseES/V8/
ADD docker-circle-init.sh $KINAGBASE_INSTALL_PATH
ADD password $KINAGBASE_INSTALL_PATH
#修改文件所有用户
RUN chown -R kingbase:kingbase $KINAGBASE_INSTALL_PATH
#授权可运行权限
RUN chmod +x /opt/kingbase/docker-circle-init.sh
RUN chmod +x /opt/kingbase/password
#修改默认工作目录
WORKDIR $KINAGBASE_INSTALL_PATH
#修改默认用户
USER kingbase
#配置数据库的运行文件引入操作系统配置
ENV PATH $KINAGBASE_INSTALL_PATH/kingbaseES/V8/Server/bin:$PATH
#配置数据库的类库文件引入操作系统配置
ENV LD_LIBRARY_PATH $KINAGBASE_INSTALL_PATH/kingbaseES/V8/Server/lib:$LD_LIBRARY_PATH
#配置数据库的默认端口
ENV KINGBASE_PORT 54321
ENV KINGBASE_DATA $KINAGBASE_INSTALL_PATH/kingbaseES/V8/data
#配置数据库的根目录
ENV KINGBASE_HOME $KINAGBASE_INSTALL_PATH/kingbaseES/V8/Server
#配置数据库的运行日志目录
ENV KINGBASE_LOGFILE ./logfile
#配置数据库初始化密码
ENV KINGBASE_SYSTEM_PASSWORD 12345678ab
#配置数据库初始化的默认模式
ENV KINGBASE_MODE oracle
#配置数据库初始化大小写敏感
ENV KINGBASE_ENABLE_CI yes
#数据库的测试版本
ENV KINGBASE_VERSION V008R006C007B0024
#对外开发的端口
EXPOSE 54321ENTRYPOINT  ["/opt/kingbase/docker-circle-init.sh"]

ENTRYPOINT
如果打包经常报错建议先修改为CMD 测试成功后再修改为ENTRYPOINT

上传需要的文件到自定义目录下

[root@docker myfiles]# ls -l
总用量 5765984
-rw-r--r--. 1 root     root           1172 127 18:45 docker-circle-init.sh
-rwx------. 1 kingbase kingbase       1200 127 16:50 Dockerfile
-rw-r--r--. 1 root     root     5904353280 127 15:28 kingbase.tar.gz
-rw-r--r--. 1 root     root             11 126 22:56 password
[root@docker myfiles]# 

注意

kingbase.tar.gz 为R6版本打包目录为KESRealPro\版本号\下的所有文件,因为上级文件都是软连接,等写好正式的dockerfile后在整理完整版本的kingbaseES Docker镜像

docker-circle-init.sh文件内容

#!/bin/bashDB_INSTALL_PATH=$KINAGBASE_INSTALL_PATH
DB_PATH=$KINGBASE_HOME
DATA_DIR=$KINGBASE_DATA
LOG_FILE=$KINGBASE_LOGFILE
DB_PASSWORD_FILE=/opt/kingbase/password
DB_ENABLE_CI= ''if [ $KINGBASE_ENABLE_CI == 'yes' ];thenDB_ENABLE_CI= '--enable-ci'
firm -rf ${DATA_DIR}/.DS_Storecheck_is_init_database() {declare -g DATABASE_ALREADY_EXISTSif [ -d "${DATA_DIR}" -a `ls -A ${DATA_DIR}|wc -w` -ne 0 ];thenDATABASE_ALREADY_EXISTS='true'fi
}database_init(){mkdir -p ${DATA_DIR}chown -R kingbase:kingbase ${DATA_DIR}echo ${SYSTEM_PWD-123456} > $DB_PASSWORD_FILEcd ${DB_PATH}/bin/extraParams="--encoding=UTF8 ${DB_ENABLE_CI} --locale=C"./initdb -U system -m $KINGBASE_MODE --pwfile=${DB_INSTALL_PATH}/password -E UTF8 ${DATA_DIR} ${extraParams}
}check_is_init_database
if [ -z "${DATABASE_ALREADY_EXISTS}" ];thendatabase_initif [ $? -ne 0 ];thenecho "initdb failed"exit 1fi
fi# if [ -f "${DB_PATH}/kingbaseES/V8/Server/bin/license.dat" ];then
#   mv ${DB_PATH}/license.dat ${DB_PATH}/kingbaseES/V8/Server/bin/
# fi${DB_PATH}/bin/sys_ctl -D ${DATA_DIR} -l ${LOG_FILE} startsleep 10
## docker需要一个前台的进行来进行持续运行,必须要加上以下这句,如果不加的话无论你-d都会自动停止
exec tail -f ${LOG_FILE} 

password 内容

[root@docker myfiles]# cat password
12345678ab ##这个是初始化密码

开始打包

docker run -dit --name kesv8r6c7b24  -v /mydata/kes/r6c7b24/ circledba/kingbase:v008r006c007b0024

注意

## 停止所有容器
docker stop $(docker ps -qa)
## 删除所有容器
docker rm $(docker ps -qa)
## 删除所有镜像
docker rmi $(docker images -qa)
## 清除所有docker产生的缓存
docker builder prune
## 打包Dockfile 到根目录下 名称为circledba/kingbase标签(版本)为v008r006c007b0024
docker build -t circledba/kingbase:v008r006c007b0024 .

打包完成后执行

docker run -dit --name kes624 --restart=always -p 54321:54321 -v /mydata/kes/r6c7b24/:/opt/kingbase/kingbase/ES/V8/data circledba/kingbase:v008r006c007b0024

-d 后台运行
-v 绑定目录到镜像内
-e

参数说明
-e KINAGBASE_INSTALL_PATH=/opt/kingbase配置数据库安装目录
-e KINGBASE_MODE=oracle数据库的初始化模式 mysql oracle pg
-e KINGBASE_ENABLE_CI=yes大小写是否敏感yes 不敏感 no 敏感

尝试用工具连接数据库

在这里插入图片描述

http://www.lryc.cn/news/254914.html

相关文章:

  • YOLOv8独家改进《全网无重复 YOLOv8专属打造》感知聚合SERDet检测头:简单高效涨点,即插即用|检测头新颖改进
  • Android Studio中Flutter项目找不到Android真机设备解决方法
  • Vue 静态渲染 v-pre
  • C语言基础概念考查备忘 - 标识符、关键字、预定义标识符、语法检查、语义检查 ... 左值、右值、对象、副作用、未定义行为、sizeof是什么等等
  • 插件原理与开发
  • Git 分支合并时 Merge, Rebase, Squash 的使用场景
  • 第5节:Vue3 JavaScript 表达式
  • StarRocks 存算分离最佳实践,让降本增效更简单
  • 虚拟网络技术:bond技术
  • 【Android】解决安卓中并不存在ActivityMainBinding
  • mysql的几种索引
  • R语言手册30分钟上手
  • 前缀和例题:子矩阵的和AcWing796-Java版
  • 前端传参中带有特殊符号导致后端接收时乱码或转码失败的解决方案
  • 【扩散模型】深入理解图像的表示原理:从像素到张量
  • WPS论文写作——公式和公式序号格式化
  • ChatGPT一周年,奥特曼官宣 OpenAI 新动作!
  • JVM 运行时内存篇
  • Docker安装postgres最新版
  • 浅析计算机网络安全的的防范与措施
  • 多表操作、其他字段和字段参数、django与ajax(回顾)
  • 您知道计算机是怎么分类的嘛
  • [MTK]安卓8 ADB执行ota升级
  • python-比较Excel两列数据,并分别显示差异
  • RT-DETR手把手教程:NEU-DET钢材表面缺陷检测任务 | 不同网络位置加入EMA注意力进行魔改
  • WebGL笔记:矩阵缩放的数学原理和实现
  • 处理器中的TrustZone之安全状态
  • 开发一款短剧视频小程序软件多少钱?
  • 『PyTorch学习笔记』分布式深度学习训练中的数据并行(DP/DDP) VS 模型并行
  • 揭秘C语言结构体:通往内存对齐的视觉之旅