当前位置: 首页 > 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 敏感

尝试用工具连接数据库

在这里插入图片描述

相关文章:

【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 指令&#xff1a;用于阻止 Vue 解析这个标签&#xff0c;直接渲染到页面中。 语法格式&#xff1a; <div v-pre> {{ 数据 }} </div> 基础使用&#xff1a; <template><h3>静态渲染 v-pre</h3><p v-pre>静态渲染&#xff1a;{{ n…...

C语言基础概念考查备忘 - 标识符、关键字、预定义标识符、语法检查、语义检查 ... 左值、右值、对象、副作用、未定义行为、sizeof是什么等等

什么是标识符、关键字和预定义标识符&#xff1f;三者有何区别&#xff1f; 当谈论C语言中的标识符、关键字和预定义标识符时&#xff0c;让我们从每个概念的基础开始。 标识符&#xff08;Identifiers&#xff09;&#xff1a; 标识符是用来给变量、函数、类型等命名的。在…...

插件原理与开发

插件原理与开发 在 Mybatis总体执行流程 一文中简单的介绍了插件的初始化过程&#xff0c;本文将从源码的角度介绍一下mybatis的插件原理与简单开发实战。 插件原理 插件的注册和管理是通过InterceptorChain进行的&#xff0c;在创建Executor、StatementHandler、ParameterH…...

Git 分支合并时 Merge, Rebase, Squash 的使用场景

前言 Git 的分支设计大大提升了并行开发的能力&#xff0c;但相应的&#xff0c;也就要解决如何进行分支合并。毕竟分久必合&#xff0c;最终还是要把大家的工作合并起来&#xff0c;进行统一发布的。在合并时&#xff0c;通常有三种操作&#xff1a; Merge commitsRebaseSqu…...

第5节:Vue3 JavaScript 表达式

在 Vue3 中&#xff0c;JavaScript 表达式的使用方式与 Vue2 有所不同。 在 Vue3 中&#xff0c;你可以使用 v-bind 指令来绑定 JavaScript 表达式。例如&#xff1a; <template><div>{{ count }}</div> </template><script> import { ref } f…...

StarRocks 存算分离最佳实践,让降本增效更简单

StarRocks 存算分离自版本 3.0.0 开放使用&#xff0c;已经历过多个大版本迭代&#xff0c;在众多客户生产环境中得到验证。但在用户使用过程中也反馈了一些问题&#xff0c;大多源自对新能力不够熟悉导致无法达到最佳效果。因而&#xff0c;本文提供 StarRocks 存算分离最佳实…...

虚拟网络技术:bond技术

网卡bond也称为网卡捆绑&#xff0c;就是将两个或者更多的物理网卡绑定成一个虚拟网卡。 bond的作用&#xff1a; 1.提高网卡的吞吐量 2.增加网络的高可用&#xff0c;实现负载均衡。 一、bond简介 bond技术即bonding&#xff0c;能将多块物理网卡绑定到一块虚拟网卡上&…...

【Android】解决安卓中并不存在ActivityMainBinding

安卓中并不存在ActivityMainBinding这个类&#xff0c;这个类是在XML布局的最外层加入就会自动生成。但是你在最后绑定主布局时会报错获取不到根节点getRoot(). 最好的办法就是&#xff0c;删除原来的最外层节点&#xff0c;再重新添加&#xff0c;感觉是因为复制时并没有让系…...

mysql的几种索引

mysql索引的介绍可以mysql官网的词汇表中搜索&#xff1a; https://dev.mysql.com/doc/refman/8.0/en/glossary.html mysql可以在表的一列、或者多列上创建索引&#xff0c;索引的类型可以选择&#xff0c;如下&#xff1a; 普通索引&#xff08;KEY&#xff09; 普通索引可…...

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&#xff1a;解决思路2解决思路3&#xff08;最终解决方案&#xff09;后记 bug背景 项目中采用富文本编辑器后传参引起的bug&#xff0c;起因如下&#xff1a; 数据库中存入的数据会变成这种未经转码的URL编码 解决思路1&#xff1a; 使用JSON方…...

【扩散模型】深入理解图像的表示原理:从像素到张量

【扩散模型】深入理解图像的表示原理&#xff1a;从像素到张量 在深度学习中&#xff0c;图像是重要的数据源之一&#xff0c;而图像的表示方式对于算法的理解和处理至关重要。本文将带你深入探讨图像的底层表示原理&#xff0c;从像素到张量&#xff0c;让你对图像表示有更清…...

WPS论文写作——公式和公式序号格式化

首先新建一个表格&#xff0c;表格尺寸按你的需求来确定&#xff0c;直接 插入--》表格 即可。 然后在表格对应位置填上公式&#xff08;公式要用公式编辑器&#xff09;和公式序号&#xff0c;然后可以按照单独的单元格或者整行或整列等来设置样式&#xff0c;比如居中对齐、…...

ChatGPT一周年,奥特曼官宣 OpenAI 新动作!

大家好&#xff0c;我是二狗。 今天是11月30日&#xff0c;一转眼&#xff0c;ChatGPT 发布已经一周年了&#xff01; 而就在刚刚&#xff0c;ChatGPT一周年之际。 OpenAI 正式宣布Sam Altman回归重任CEO, Mira Murati 重任CTO&#xff0c;Greg Brockman重任总裁&#xff0c;O…...

JVM 运行时内存篇

面试题&#xff1a; 讲一下为什么JVM要分为堆、方法区等&#xff1f;原理是什么&#xff1f;&#xff08;UC、智联&#xff09; JVM的分区了解吗&#xff0c;内存溢出发生在哪个位置 &#xff08;亚信、BOSS&#xff09; 简述各个版本内存区域的变化&#xff1…...

Docker安装postgres最新版

1. postgres数据库 PostgreSQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是一种高度可扩展的、可靠的、功能丰富的数据库系统。以下是关于PostgreSQL的一些介绍&#xff1a; 开源性&#xff1a;PostgreSQL是一个开源项目&#xff0c;可以…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...