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
连接效果就是:
就这么简单!然后就都搞定了