Henry
发布于 2025-10-24 / 8 阅读
0
0

PostgreSQL - Docker 部署包含 pgvector 功能的数据库

背景简介

Docker 部署包含 pgvector 功能的数据库。

前置信息

  1. Docker 【Docker - Debian 安装

详细信息

文件架构

pgvector/
  |-- docker-compose.yml
  |-- .db_env
  |-- data/
  |     |-- 
  • 修改 data 目录权限
sudo chown -R 999:999 data

第一步:配置环境变量

  • 准备 .db_env 配置文件
# PostgreSQL 数据库配置
POSTGRES_USER=pguser
POSTGRES_PASSWORD=pgpass
POSTGRES_DB=pgdb

说明:此文件用于设置 PostgreSQL 的用户名、密码和默认数据库,可根据实际需求修改。

第二步: 部署数据库

  • 准备docker-compose.yml 配置文件
services:
  pgvector:
    image: pgvector/pgvector:pg17
    container_name: pgvector
    env_file:
      - .db_env
    ports:
      - "5432:5432"
    volumes:
      - ./data:/var/lib/postgresql/data
    restart: unless-stopped

说明:

image: pgvector/pgvector:pg17 为官方 pgvector 镜像,基于 PostgreSQL 17。

env_file 指定数据库环境变量文件。

volumes 将容器内 PostgreSQL 数据目录挂载到宿主机 ./data 目录,实现数据持久化。

ports 将容器内 5432 端口映射到宿主机,便于外部访问。

  • 开始部署
docker compose up -d
[+] Running 2/2
 ✔ Network pgvector_default  Created  
 ✔ Container pgvector
        Started 
  • 查看Log
doker logs -f --tail 5 pgvector
2025-10-24 02:28:58.244 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2025-10-24 02:28:58.244 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2025-10-24 02:28:58.282 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2025-10-24 02:28:58.362 UTC [64] LOG:  database system was shut down at 2025-10-24 02:28:58 UTC
2025-10-24 02:28:58.406 UTC [1] LOG:  database system is ready to accept connections

第三步: 启用 pgvector

  • 进入容器并登录数据库
docker exec -it pgvector psql -U pguser -d pgdb

psql (17.0 (Debian 17.0-1.pgdg120+1))
Type "help" for help.

pgdb=# 
  • 执行 sql 并激活 pgvector 扩展
CREATE EXTENSION vector;
CREATE EXTENSION
pgdb=#
  • 查看扩展
\dx

                             List of installed extensions
  Name   | Version |   Schema   |                     Description                      
---------+---------+------------+------------------------------------------------------
 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language
 vector  | 0.8.0   | public     | vector data type and ivfflat and hnsw access methods
(2 rows)

pgdb=# 

以上便是本文的全部内容,感谢您的阅读,如遇到任何问题,欢迎在评论区留言讨论。



评论