【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 12月 7 18:45 docker-circle-init.sh
-rwx------. 1 kingbase kingbase 1200 12月 7 16:50 Dockerfile
-rw-r--r--. 1 root root 5904353280 12月 7 15:28 kingbase.tar.gz
-rw-r--r--. 1 root root 11 12月 6 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 敏感 |
尝试用工具连接数据库

相关文章:
【Docker】从零开始:18.使用Dockerfile构造自己的KingbaseES数据库镜像
【Docker】从零开始:17.使用Dockerfile构造自己的数据库镜像 新建一个自定义目录并创建Dockerfile文件上传需要的文件到自定义目录下注意docker-circle-init.sh文件内容password 内容 开始打包注意打包完成后执行 尝试用工具连接数据库 kingbase.tar.gz 包过大我就上…...
YOLOv8独家改进《全网无重复 YOLOv8专属打造》感知聚合SERDet检测头:简单高效涨点,即插即用|检测头新颖改进
💡本篇内容:YOLOv8独家改进《全网无重复,YOLOv8专属》感知聚合SERDet检测头:高效涨点,即插即用|检测头新颖改进 💡🚀🚀🚀本博客 YOLO系列 + 全新原创感知聚合SERDet检测头 改进创新点改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可,附改进源代…...
Android Studio中Flutter项目找不到Android真机设备解决方法
起因:创建正常Android项目可以运行在真机设备上,创建flutter项目就找寻不到Android真机设备。 1:在flutter sdk安装目录按下Shift和鼠标右键,打开Powershell窗口 2:输入以下,然后回车 flutter config --…...
Vue 静态渲染 v-pre
v-pre 指令:用于阻止 Vue 解析这个标签,直接渲染到页面中。 语法格式: <div v-pre> {{ 数据 }} </div> 基础使用: <template><h3>静态渲染 v-pre</h3><p v-pre>静态渲染:{{ n…...
C语言基础概念考查备忘 - 标识符、关键字、预定义标识符、语法检查、语义检查 ... 左值、右值、对象、副作用、未定义行为、sizeof是什么等等
什么是标识符、关键字和预定义标识符?三者有何区别? 当谈论C语言中的标识符、关键字和预定义标识符时,让我们从每个概念的基础开始。 标识符(Identifiers): 标识符是用来给变量、函数、类型等命名的。在…...
插件原理与开发
插件原理与开发 在 Mybatis总体执行流程 一文中简单的介绍了插件的初始化过程,本文将从源码的角度介绍一下mybatis的插件原理与简单开发实战。 插件原理 插件的注册和管理是通过InterceptorChain进行的,在创建Executor、StatementHandler、ParameterH…...
Git 分支合并时 Merge, Rebase, Squash 的使用场景
前言 Git 的分支设计大大提升了并行开发的能力,但相应的,也就要解决如何进行分支合并。毕竟分久必合,最终还是要把大家的工作合并起来,进行统一发布的。在合并时,通常有三种操作: Merge commitsRebaseSqu…...
第5节:Vue3 JavaScript 表达式
在 Vue3 中,JavaScript 表达式的使用方式与 Vue2 有所不同。 在 Vue3 中,你可以使用 v-bind 指令来绑定 JavaScript 表达式。例如: <template><div>{{ count }}</div> </template><script> import { ref } f…...
StarRocks 存算分离最佳实践,让降本增效更简单
StarRocks 存算分离自版本 3.0.0 开放使用,已经历过多个大版本迭代,在众多客户生产环境中得到验证。但在用户使用过程中也反馈了一些问题,大多源自对新能力不够熟悉导致无法达到最佳效果。因而,本文提供 StarRocks 存算分离最佳实…...
虚拟网络技术:bond技术
网卡bond也称为网卡捆绑,就是将两个或者更多的物理网卡绑定成一个虚拟网卡。 bond的作用: 1.提高网卡的吞吐量 2.增加网络的高可用,实现负载均衡。 一、bond简介 bond技术即bonding,能将多块物理网卡绑定到一块虚拟网卡上&…...
【Android】解决安卓中并不存在ActivityMainBinding
安卓中并不存在ActivityMainBinding这个类,这个类是在XML布局的最外层加入就会自动生成。但是你在最后绑定主布局时会报错获取不到根节点getRoot(). 最好的办法就是,删除原来的最外层节点,再重新添加,感觉是因为复制时并没有让系…...
mysql的几种索引
mysql索引的介绍可以mysql官网的词汇表中搜索: https://dev.mysql.com/doc/refman/8.0/en/glossary.html mysql可以在表的一列、或者多列上创建索引,索引的类型可以选择,如下: 普通索引(KEY) 普通索引可…...
R语言手册30分钟上手
文章目录 1. 环境&安装1.1. rstudio保存工作空间 2. 创建数据集2.1. 数据集概念2.2. 向量、矩阵2.3. 数据框2.3.1. 创建数据框2.3.2. 创建新变量2.3.3. 变量的重编码2.3.4. 列重命名2.3.5. 缺失值2.3.6. 日期值2.3.7. 数据框排序2.3.8. 数据框合并(合并沪深300和中证500收盘…...
前缀和例题:子矩阵的和AcWing796-Java版
//前缀和模板提,在读入数据的时候就可以先算好前缀和的大小 //计算前缀的时候用:g[i][j] g[i][j-1] g[i-1][j] - g[i-1][j-1] Integer.parseInt(init[j-1]); //计算结果的时候用:g[x2][y2] - g[x1 - 1][y2]- g[x2][y1-1] g[x1 -1][y1 - 1] "\n" //一些重复加的地…...
前端传参中带有特殊符号导致后端接收时乱码或转码失败的解决方案
文章目录 bug背景解决思路1:解决思路2解决思路3(最终解决方案)后记 bug背景 项目中采用富文本编辑器后传参引起的bug,起因如下: 数据库中存入的数据会变成这种未经转码的URL编码 解决思路1: 使用JSON方…...
【扩散模型】深入理解图像的表示原理:从像素到张量
【扩散模型】深入理解图像的表示原理:从像素到张量 在深度学习中,图像是重要的数据源之一,而图像的表示方式对于算法的理解和处理至关重要。本文将带你深入探讨图像的底层表示原理,从像素到张量,让你对图像表示有更清…...
WPS论文写作——公式和公式序号格式化
首先新建一个表格,表格尺寸按你的需求来确定,直接 插入--》表格 即可。 然后在表格对应位置填上公式(公式要用公式编辑器)和公式序号,然后可以按照单独的单元格或者整行或整列等来设置样式,比如居中对齐、…...
ChatGPT一周年,奥特曼官宣 OpenAI 新动作!
大家好,我是二狗。 今天是11月30日,一转眼,ChatGPT 发布已经一周年了! 而就在刚刚,ChatGPT一周年之际。 OpenAI 正式宣布Sam Altman回归重任CEO, Mira Murati 重任CTO,Greg Brockman重任总裁,O…...
JVM 运行时内存篇
面试题: 讲一下为什么JVM要分为堆、方法区等?原理是什么?(UC、智联) JVM的分区了解吗,内存溢出发生在哪个位置 (亚信、BOSS) 简述各个版本内存区域的变化࿱…...
Docker安装postgres最新版
1. postgres数据库 PostgreSQL是一种开源的关系型数据库管理系统(RDBMS),它是一种高度可扩展的、可靠的、功能丰富的数据库系统。以下是关于PostgreSQL的一些介绍: 开源性:PostgreSQL是一个开源项目,可以…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
