PostgreSQL 16 + pgvector 安装(Docker)
一、环境信息
Section titled “一、环境信息”| 项目 | 值 |
|---|---|
| 镜像 | pgvector/pgvector:pg16 |
| 容器名 | pgsql |
| 端口 | 5432 |
| 超级用户 | postgres |
| 超级用户密码 | H3password |
| 业务用户 | authine |
| 业务用户密码 | H3password |
| 数据库名 | 所有者 |
|---|---|
| cloudpivot_launcher | authine |
| cloudpivot_user | authine |
| cloudpivot_tenant | authine |
| cloudpivot_report | authine |
| cloudpivot_ai | authine |
二、目录结构
Section titled “二、目录结构”部署前需在宿主机创建以下目录:
/docker/pgsql/├── data/ # 数据持久化目录└── init/ # 初始化 SQL 脚本目录 └── init.sql # 自动执行的初始化脚本三、部署步骤
Section titled “三、部署步骤”1. 创建宿主机目录
Section titled “1. 创建宿主机目录”mkdir -p /docker/pgsql/data /docker/pgsql/init2. 下载附件(推荐)
Section titled “2. 下载附件(推荐)”下载后请确保文件路径如下:
/path/to/docker-compose.yml/docker/pgsql/init/init.sql3. 准备 docker-compose.yml
Section titled “3. 准备 docker-compose.yml”在 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"4. 准备 pgsql/init/init.sql
Section titled “4. 准备 pgsql/init/init.sql”在宿主机创建 /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_launcherGRANT ALL PRIVILEGES ON DATABASE cloudpivot_launcher TO authine;GRANT ALL PRIVILEGES ON SCHEMA public TO authine;
\c cloudpivot_userGRANT ALL PRIVILEGES ON DATABASE cloudpivot_user TO authine;GRANT ALL PRIVILEGES ON SCHEMA public TO authine;
\c cloudpivot_tenantGRANT ALL PRIVILEGES ON DATABASE cloudpivot_tenant TO authine;GRANT ALL PRIVILEGES ON SCHEMA public TO authine;
\c cloudpivot_reportGRANT ALL PRIVILEGES ON DATABASE cloudpivot_report TO authine;GRANT ALL PRIVILEGES ON SCHEMA public TO authine;
\c cloudpivot_aiCREATE EXTENSION IF NOT EXISTS vector;GRANT ALL PRIVILEGES ON DATABASE cloudpivot_ai TO authine;GRANT ALL PRIVILEGES ON SCHEMA public TO authine;5. 启动服务
Section titled “5. 启动服务”cd /path/to/docker-compose.yml所在目录docker compose up -d pgsql6. 验证部署
Section titled “6. 验证部署”# 查看容器状态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"四、常用运维命令
Section titled “四、常用运维命令”# 进入 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五、注意事项
Section titled “五、注意事项”-
init.sql仅在 首次启动(/docker/pgsql/data为空)时自动执行。若数据目录已存在数据,需手动执行初始化脚本或清空数据目录后重新启动。 -
如需手动执行初始化脚本:
docker exec -it pgsql psql -U postgres -f /docker-entrypoint-initdb.d/init.sql -
生产环境建议修改
postgres超级用户密码与authine用户密码为不同的强密码。
© 2025-2026 LiuXing. All Rights Reserved.