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

Linux环境下基于Docker安装 PostgreSQL数据库并配置 pgvector

文章目录

  • 1 docker-compose 安装 PostgreSQL + 容器内安装 pgvector
    • 1.1 基于 docker-compose 安装 PostgreSQL 数据库
    • 1.2 容器内配置 pgvector
  • 2. docker-compose + Dockerfile 形式直接配置PostgreSQL数据库及 pgvector
  • 参考资料

PostgreSQL是一种功能强大的开源关系数据库管理系统,广泛应用于各种应用程序中。PostgresStore 提供持久化存储功能,支持层次命名空间和可选的向量搜索(通过 pgvector 扩展),适合需要长时记忆的 AI 应用,如聊天机器人或自动化工作流。

  • PostgreSQL 官网:https://www.postgresql.org/
  • pgvector Github项目地址:https://github.com/pgvector/pgvector

1 docker-compose 安装 PostgreSQL + 容器内安装 pgvector

1.1 基于 docker-compose 安装 PostgreSQL 数据库

参考博客:

  • https://github.com/NanGePlus/LangGraphChatBot

下面介绍如何以 docker compose 形式启动PostgreSQL服务。

  1. 安装相关依赖包,推荐使用系统自带的 docker compose
sudo apt-get update
sudo apt-get install docker-compose-plugin  # 新版本

注意: 这里,如果安装的是新版本的 docker-compose-plugin,后续命令为 docker compose (没有中间的横线-)

注意事项:

  1. 不要使用 pip 安装 docker compose,特别是当您使用 Anaconda 环境时。
  2. 使用系统包管理器(apt/yum)安装 docker compose

这里,笔者之前在 Anaconda 的虚拟环境中 使用 pip install docker-compose 就出现了报错,所以大家最好 使用 系统包管理器(apt/yum)来安装 docker-compose

  1. 编写 docker-compose 所需的配置文件。
    这里我们的配置文件为 docker-compose.yaml,文件内容为:
services:postgres:image: postgres:15        # 指定具体版本container_name: postgres_dbenvironment:POSTGRES_USER: postgresPOSTGRES_PASSWORD: postgresPOSTGRES_DB: postgresTZ: Asia/Shanghai       # 设置时区ports:- "5432:5432"volumes:- pgdata:/var/lib/postgresql/datarestart: unless-stoppedhealthcheck:             # 健康检查test: ["CMD", "pg_isready", "-U", "nange"]interval: 10stimeout: 5sretries: 5command: ["postgres", "-c", "max_connections=200"]  # 自定义配置volumes:pgdata:

这里,我们配置的容器名称为 postgres_db

  1. 运行下面命令启动PostgreSQL数据库服务:
sudo docker compose up -d

这个命令会:

  • 以后台模式 (-d) 启动所有定义的服务
  • 如果本地有 postgres:15 镜像,则直接加载使用。若没有 postgres:15 镜像,会自动从镜像仓库拉取。
  • 创建名为 pgdata 的持久化卷
  • 启动容器并应用所有配置

运行成功的话会出现如下界面:
在这里插入图片描述

  1. 检查容器是否正常运行:
docker compose ps

或查看所有容器状态:

docker ps
  1. 连接数据库

您可以通过以下方式连接数据库:

方式一:在容器内使用 psql

docker compose exec postgres psql -U postgres

方式二:从外部客户端连接

使用任何 PostgreSQL 客户端工具连接,如Navicat可视化工具。
在这里插入图片描述

  1. 停止服务(当需要时)
docker compose down

如果要同时删除数据卷(慎用,会删除所有数据):

docker compose down --volumes

1.2 容器内配置 pgvector

在容器中按照如下步骤进行操作。

  1. 进入容器:
docker exec -it postgres_db bash
  1. 容器内安装依赖
apt update
apt install -y git build-essential postgresql-server-dev-15

这里,笔者运行时出现报错:

W: Failed to fetch http://deb.debian.org/debian/dists/bookworm/InRelease  Could not connect to debian.map.fastlydns.net:80 (151.101.90.132)W: Failed to fetch http://apt.postgresql.org/pub/repos/apt/dists/bookworm-pgdg/InRelease  Could not connect to apt.postgresql.org:80 (151.101.91.52), connection timed out

需要检查下服务器是否开通了 http://deb.debian.orghttp://apt.postgresql.org 的访问权限。如果没有权限,可以申请开通,或者使用国内清华或阿里云的镜像源。

  1. 容器内编译并安装 pgvector

这里主要参考 pgvector 官网:https://github.com/pgvector/pgvector

cd /tmp
git clone https://github.com/pgvector/pgvector.git
cd pgvector
make
make install
  1. 检查扩展文件是否安装成功
ls -l /usr/share/postgresql/15/extension/vector*
  1. 启用pgvector扩展
psql -U postgres -d mydatabase
-- 在psql中执行
CREATE EXTENSION vector;
  1. 验证安装

基于SQL语句验证:

SELECT * FROM pg_extension WHERE extname = 'vector';

2. docker-compose + Dockerfile 形式直接配置PostgreSQL数据库及 pgvector

参考博客:

  • docker-compose安装pgsql和pgvector
  • 2-PostgreSQL docker compose 安装教程-Pgvector
  1. 创建 Dockerfile
# 使用 PostgreSQL 15 基础镜像
FROM postgres:15# 安装 pgvector
RUN apt-get update && \apt-get install -y postgresql-16-pgvector && \rm -rf /var/lib/apt/lists/*# 设置启动命令
CMD ["postgres"]
  1. 创建 docker-compose.yaml
services:postgres:build:context: .dockerfile: Dockerfilecontainer_name: postgres_dbenvironment:POSTGRES_USER: postgresPOSTGRES_PASSWORD: postgresPOSTGRES_DB: postgresTZ: Asia/Shanghai       # 设置时区ports:- "5432:5432"volumes:- pgdata:/var/lib/postgresql/datarestart: alwayshealthcheck:             # 健康检查test: ["CMD", "pg_isready", "-U", "nange"]interval: 10stimeout: 5sretries: 5command: ["postgres", "-c", "max_connections=200"]  # 自定义配置volumes:pgdata:
  1. 构建Dockerfile
docker compose build
  1. 运行
docker compose up -d
  1. 进入postgres容器
docker exec -it postgres psql -U postgres -d postgres
  1. 判断vector工具是否安装成功
CREATE EXTENSION IF NOT EXISTS vector;

参考资料

  • https://github.com/NanGePlus/LangGraphChatBot
  • docker-compose安装pgsql和pgvector
  • 2-PostgreSQL docker compose 安装教程-Pgvector
http://www.lryc.cn/news/2386609.html

相关文章:

  • (9)-java+ selenium->元素定位之By name
  • 深浅拷贝?
  • Beckhoff PLC 功能块 FB_CTRL_ACTUAL_VALUE_FILTER (模拟量滤波)
  • Mysql在SQL层面的优化
  • JVM规范之栈帧
  • 【C++指南】string(四):编码
  • 深度学习之序列建模的核心技术:LSTM架构深度解析与优化策略
  • AI量化交易是什么?它是如何重塑金融世界的?
  • 分布式事务处理方案
  • CVE-2024-36467 Zabbix权限提升
  • Dify中的自定义模型插件开发例子:以xinference为例
  • crud方法命名示例
  • 尚硅谷redis7 33-36 redis持久化之RDB优缺点及数据丢失案例
  • No such file or directory: ‘ffprobe‘
  • 计算机网络-WebSocket/DNS/Cookie/Session/Token/Jwt/Nginx
  • 功能“递归模式”在 C# 7.3 中不可用,请使用 8.0 或更高的语言版本的一种兼容处理方案
  • 第4章-操作系统知识
  • 将网页带格式转化为PDF
  • 【ArcGIS】ArcGIS AI 助手----复现
  • 使用 FFmpeg 将视频转换为高质量 GIF(保留原始尺寸和帧率)
  • 《Java vs Go vs C++ vs C:四门编程语言的深度对比》
  • 充电枪IEC62196/EN 62196测试内容
  • 有效的字母异位符--LeetCode
  • SAP ERP 系统拆分的七大挑战
  • AcrelEMS 3.0智慧能源管理平台:构建企业微电网数智化中枢
  • 【HTML-12】HTML表格常用属性详解:从基础到高级应用
  • Word转PDF--自动生成目录
  • MySQL组合索引优化策略
  • Spring MVC 的的核心原理与实践指南
  • 轻量级视觉语言模型 Dolphin:高效精准的文档结构化解析利器