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

docker部署华为高斯数据库opengauss(arm版本)

在这里插入图片描述

前言:

之前工作中部署的是x86的版本,相关的镜像包资源还比较好找,但是最近客户的机器是arm架构的,x86的镜像肯定是在arm机器上没法跑的,一跑就崩溃,网上大部分文章都是默认部署x86架构的,arm版本的镜像又不好找,经过一些波折,最终还好搞定了,我把相关的arm版本的镜像也分享出来,感兴趣的小伙伴可以下载后自己试试看。

我部署的还是3.1.0的版本,相关的资源参考

github地址是 这里,点击跳转即可(不过这里是dockerfile文件,需要自己构建镜像)
dockerhub的参考地址是:点击这里(没魔法应该上不去dockerhub)

注意:特别声明

(不是我说的哈,我看资料是这样解释的,所以我用的3.1.0,直接 navicat 的 postgres协议就能连)

如果您尝试在 macOS 或 Windows 上运行 openGauss 5.0及以上版本的容器,请使用该enmotech/opengauss-lite版本。
这是因为从 5.0 版本开始,openGauss EE容器无法在 macOS 或 Windows 上正常启动。但在 Linux 上运行则没有问题。

arm镜像包地址:点击自己下载或者收藏即可(我放在百度网盘了)

好像csdn也能传资源,后面我看看怎么弄,之前没弄过

1. 创建项目目录

mkdir -p opengauss-arm && cd opengauss-arm

2. 上传文件(需要上传的文件)

# - opengauss-arm-3.1.0-image.tar -- 镜像包就放在opengauss-arm目录下就行(必须要有)
# - docker-compose.yml            --  yml文件就放在opengauss-arm目录下就行(必须要有)
# - load-and-run.sh (可选)         -- 这个是加载镜像包,启动镜像的脚本,你也可以自己手动加载和启动,不是必须的

docker-compose.yml 文件内容:

version: "3.8"services:opengauss:image: opengauss-arm:3.1.0container_name: opengauss-armrestart: alwaysports:- "15432:5432"  # openGauss 默认端口,外部使用15432environment:GS_PASSWORD: "Gauss@123"  # 设置数据库初始化密码(必须满足复杂度要求)volumes:- ./data:/var/lib/opengauss/data  # 数据目录挂载- ./config:/etc/opengauss  # 可选配置目录(如需覆盖配置)shm_size: 1gulimits:nproc: 65535nofile:soft: 65535hard: 65535 

想运行脚本启动的就创建文件load-and-run.sh,文件内容如下:

(我是感觉 自己运行 加载镜像命令 + docker-compose up -d 命令启动也挺简单的,不用脚本去一键启动)

#!/bin/bash# openGauss 3.1.0 ARM 镜像加载和运行脚本
# 用于加载镜像包并启动 openGauss 容器set -e# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color# 配置变量
IMAGE_FILE="opengauss-arm-3.1.0-image.tar"
IMAGE_NAME="opengauss-arm:3.1.0"
CONTAINER_NAME="opengauss-arm-db"echo -e "${GREEN}=== openGauss 3.1.0 ARM 镜像加载和运行脚本 ===${NC}"
echo -e "${YELLOW}镜像文件: ${IMAGE_FILE}${NC}"
echo -e "${YELLOW}镜像名称: ${IMAGE_NAME}${NC}"
echo -e "${YELLOW}容器名称: ${CONTAINER_NAME}${NC}"
echo# 检查 Docker 是否安装
if ! command -v docker &> /dev/null; thenecho -e "${RED}错误: Docker 未安装或不在 PATH 中${NC}"exit 1
fi# 检查 docker-compose 是否安装
if ! command -v docker-compose &> /dev/null; thenecho -e "${RED}错误: docker-compose 未安装或不在 PATH 中${NC}"exit 1
fi# 检查镜像文件是否存在
if [ ! -f "${IMAGE_FILE}" ]; thenecho -e "${RED}错误: 未找到镜像文件 ${IMAGE_FILE}${NC}"echo -e "${YELLOW}请先运行构建脚本: ./build-image.sh${NC}"exit 1
fi# 检查 docker-compose.yml 是否存在
if [ ! -f "docker-compose.yml" ]; thenecho -e "${RED}错误: 未找到 docker-compose.yml 文件${NC}"exit 1
fi# 停止并删除现有容器
echo -e "${GREEN}步骤 1: 停止并删除现有容器...${NC}"
if docker ps -a | grep -q ${CONTAINER_NAME}; thendocker-compose down -vecho -e "${GREEN}✓ 现有容器已停止并删除${NC}"
elseecho -e "${YELLOW}未发现现有容器${NC}"
fiecho -e "${GREEN}步骤 2: 删除现有镜像...${NC}"
if docker images | grep -q "opengauss-arm"; thendocker rmi ${IMAGE_NAME} 2>/dev/null || trueecho -e "${GREEN}✓ 现有镜像已删除${NC}"
elseecho -e "${YELLOW}未发现现有镜像${NC}"
fi# # 加载镜像
echo -e "${GREEN}步骤 3: 加载 Docker 镜像...${NC}"
docker load -i ${IMAGE_FILE}if [ $? -eq 0 ]; thenecho -e "${GREEN}✓ 镜像加载成功${NC}"
elseecho -e "${RED}✗ 镜像加载失败${NC}"exit 1
fi# 验证镜像
echo -e "${GREEN}步骤 4: 验证镜像...${NC}"
docker images | grep "opengauss-arm"# 启动容器
echo -e "${GREEN}步骤 5: 启动 openGauss 容器...${NC}"
docker-compose up -dif [ $? -eq 0 ]; thenecho -e "${GREEN}✓ 容器启动成功${NC}"
elseecho -e "${RED}✗ 容器启动失败${NC}"exit 1
fi# 等待容器启动
echo -e "${GREEN}步骤 6: 等待数据库启动...${NC}"
echo -e "${YELLOW}正在等待 openGauss 数据库启动,这可能需要几分钟...${NC}"for i in {1..120}; doif docker-compose ps | grep -q "Up"; thensleep 5if docker exec ${CONTAINER_NAME} su - omm -c "gs_ctl status -D /var/lib/opengauss/data" &>/dev/null; thenecho -e "${GREEN}✓ openGauss 数据库启动成功${NC}"breakfifiecho -n "."sleep 5if [ $i -eq 120 ]; thenechoecho -e "${RED}✗ 数据库启动超时${NC}"echo -e "${YELLOW}请检查容器日志: docker-compose logs${NC}"exit 1fi
done# 显示状态
echo
echo -e "${GREEN}=== 部署完成 ===${NC}"
echo -e "${BLUE}容器状态:${NC}"
docker-compose psecho
echo -e "${BLUE}Navicat 连接信息:${NC}"
echo -e "${YELLOW}  主机: localhost (或服务器IP地址)${NC}"
echo -e "${YELLOW}  端口: 15432${NC}"
echo -e "${YELLOW}  用户: gaussdb${NC}"
echo -e "${YELLOW}  密码: Gauss@123${NC}"
echo -e "${YELLOW}  数据库: postgres 或 testdb${NC}"echo
echo -e "${BLUE}连接命令示例:${NC}"
echo -e "${YELLOW}  gsql -d postgres -U gaussdb -W -h localhost -p 15432${NC}"echo
echo -e "${BLUE}常用操作:${NC}"
echo -e "${YELLOW}  查看日志: docker-compose logs -f${NC}"
echo -e "${YELLOW}  停止服务: docker-compose down${NC}"
echo -e "${YELLOW}  重启服务: docker-compose restart${NC}"
echo 

3. 创建必要目录

mkdir -p data config
  • data config # 我都是新建的空目录;
  • 因为允许外部访问的用户和相关的权限配置 我都已经内置到 镜像内了;
  • 所以没有之前x86镜像配置那么复杂,就建个空目录就行了

整体的目录结构是这样的

红框圈出的文件夹和文件存在就行,其它的不用管,是我自己构建镜像的时候用的)
在这里插入图片描述

4. 加载镜像包到docker镜像命令

docker load -i opengauss-arm-3.1.0-image.tar  # 在opengauss-arm目录下运行

运行后是这样的:
在这里插入图片描述

5. 启动容器

docker-compose up -d #在opengauss-arm目录下运行, 启动容器即可
docker-compose down #在opengauss-arm目录下运行, 终止和删除容器

启动后是这样的:
在这里插入图片描述

🎯 6. 无需额外配置

不需要再配置外部访问用户!
因为镜像包中已经包含了:

  • ✅ gaussdb 用户:密码 Gauss@123
  • ✅外部访问权限:pg_hba.conf 已配置 host all all 0.0.0.0/0 md5
  • ✅ 数据库:postgres (默认)和 testdb 都可以连接

7. 容器镜像 – 已经内置好了可以外部连接访问的用户

- 主机: localhost (或服务器IP地址)
- 端口: 15432
- 用户: gaussdb
- 密码: Gauss@123
- 数据库: postgres

连接效果就是:
在这里插入图片描述

就这么简单!然后就都搞定了

http://www.dtcms.com/a/271267.html

相关文章:

  • 1.1 ARMv8/ARMv9安全扩展
  • 解决SQL Server SQL语句性能问题(9)——SQL语句改写(6)
  • 【PDF提取内容改名】批量提取pdf多个指定区域内容到excel表格的操作步骤和方法
  • NLP革命二十年:从规则驱动到深度学习的跃迁
  • Spring Boot 项目中多数据源配置使用场景
  • 美股异动|机器人概念表现活跃,微美全息(WIMI.US)瞄准高增长赛道涨超14%
  • 丰田将协作机器人与现有设备相结合,以实现超高负载能力和安全性
  • 焊接机器人智能节气装置
  • Deepoc具身智能大模型:物流机器人的神经中枢如何重塑现代供应链
  • Android ttyS2无法打开该如何配置 + ttyS0和ttyS1可以
  • 板凳-------Mysql cookbook学习 (十一--------6)
  • Android 12 - 部分相机横屏显示方案
  • Docker高级管理--容器通信技术与数据持久化
  • 记录跟随recyclerview滑动的指示器
  • 智能避让+自动换针:三坐标让汽车检具测量安全又高效
  • 小鹏汽车6月交付车辆34,611辆,同比增长224%
  • 实现子系统深度融合,IBMS系统消除信息孤岛释放价值潜力
  • 云成本优化的核心原则与框架
  • React 编译器与性能优化:告别手动 Memoization
  • App中分发中的防盗链开发是做什么的?
  • 米思齐2.0 3.0 mixly arduino 编程软件下载安装及详情使用指南 导入库文件方法 支持8266 esp32
  • # 如何让微软 Edge 浏览器以 IE 模式打开某些网站?
  • APP上架怎么避免麻烦应对解决方案和替代方案
  • Spring State Machine
  • git上传大文件启用LFS git报错 the remote end hung up unexpectedly
  • 数学建模:非线性规划:二次规划问题
  • 项目管理进阶——解读智能制造项目PMO规划与项目管理方案【附全文阅读】
  • 软件测试报告第三方是什么?软件测试报告都包含啥?
  • 理解死锁:场景、实例与预防策略
  • JavaScript数组方法——梳理和考点