跳转到内容

PostgreSQL 16 + pgvector 安装(Docker)

项目
镜像pgvector/pgvector:pg16
容器名pgsql
端口5432
超级用户postgres
超级用户密码H3password
业务用户authine
业务用户密码H3password
数据库名所有者
cloudpivot_launcherauthine
cloudpivot_userauthine
cloudpivot_tenantauthine
cloudpivot_reportauthine
cloudpivot_aiauthine

部署前需在宿主机创建以下目录:

/docker/pgsql/
├── data/ # 数据持久化目录
└── init/ # 初始化 SQL 脚本目录
└── init.sql # 自动执行的初始化脚本
mkdir -p /docker/pgsql/data /docker/pgsql/init

下载后请确保文件路径如下:

/path/to/docker-compose.yml
/docker/pgsql/init/init.sql

docker-compose.yml 所在目录写入以下内容:

services:
pgsql:
image: pgvector/pgvector:pg16
container_name: pgsql
environment:
TZ: Asia/Shanghai
POSTGRES_PASSWORD: H3password
ports:
- "5432:5432"
volumes:
# 数据挂载
- /docker/pgsql/data:/var/lib/postgresql/data
# 初始化脚本
- /docker/pgsql/init:/docker-entrypoint-initdb.d
privileged: true
#network_mode: "host"

在宿主机创建 /docker/pgsql/init/init.sql,内容如下:

CREATE USER authine WITH PASSWORD 'H3password';
CREATE DATABASE cloudpivot_launcher OWNER authine;
CREATE DATABASE cloudpivot_user OWNER authine;
CREATE DATABASE cloudpivot_tenant OWNER authine;
CREATE DATABASE cloudpivot_report OWNER authine;
CREATE DATABASE cloudpivot_ai OWNER authine;
\c cloudpivot_launcher
GRANT ALL PRIVILEGES ON DATABASE cloudpivot_launcher TO authine;
GRANT ALL PRIVILEGES ON SCHEMA public TO authine;
\c cloudpivot_user
GRANT ALL PRIVILEGES ON DATABASE cloudpivot_user TO authine;
GRANT ALL PRIVILEGES ON SCHEMA public TO authine;
\c cloudpivot_tenant
GRANT ALL PRIVILEGES ON DATABASE cloudpivot_tenant TO authine;
GRANT ALL PRIVILEGES ON SCHEMA public TO authine;
\c cloudpivot_report
GRANT ALL PRIVILEGES ON DATABASE cloudpivot_report TO authine;
GRANT ALL PRIVILEGES ON SCHEMA public TO authine;
\c cloudpivot_ai
CREATE EXTENSION IF NOT EXISTS vector;
GRANT ALL PRIVILEGES ON DATABASE cloudpivot_ai TO authine;
GRANT ALL PRIVILEGES ON SCHEMA public TO authine;
cd /path/to/docker-compose.yml所在目录
docker compose up -d pgsql
# 查看容器状态
docker ps | grep pgsql
# 使用 authine 用户连接测试
docker exec -it pgsql psql -U authine -d cloudpivot_launcher -c "SELECT 1;"
# 验证 vector 扩展是否启用
docker exec -it pgsql psql -U authine -d cloudpivot_launcher -c "SELECT extname FROM pg_extension WHERE extname = 'vector';"
# 查看所有数据库
docker exec -it pgsql psql -U postgres -c "\l"
# 进入 psql 交互终端(超级用户)
docker exec -it pgsql psql -U postgres
# 进入 psql 交互终端(业务用户)
docker exec -it pgsql psql -U authine -d cloudpivot_launcher
# 查看容器日志
docker logs pgsql
# 重启服务
docker compose restart pgsql
# 停止服务
docker compose stop pgsql
  1. init.sql 仅在 首次启动/docker/pgsql/data 为空)时自动执行。若数据目录已存在数据,需手动执行初始化脚本或清空数据目录后重新启动。

  2. 如需手动执行初始化脚本:

    docker exec -it pgsql psql -U postgres -f /docker-entrypoint-initdb.d/init.sql
  3. 生产环境建议修改 postgres 超级用户密码与 authine 用户密码为不同的强密码。

© 2025-2026 LiuXing. All Rights Reserved.