diff --git a/dbSer/postgres/readme.md b/dbSer/postgres/readme.md new file mode 100644 index 0000000..4885301 --- /dev/null +++ b/dbSer/postgres/readme.md @@ -0,0 +1,114 @@ +# PostgreSQL 部署配置 + +基于 Docker Compose 的 PostgreSQL 数据库部署方案,提供生产环境和测试环境两套配置。 + +## 目录结构 + +``` +postgres/ +├── env.cfg # 环境变量配置(镜像版本、密码、认证方式) +├── prod.stack.yml # 生产环境部署配置 +├── test.stack.yml # 测试环境部署配置 +└── readme.md # 本文件 +``` + +## 环境变量说明 (`env.cfg`) + +| 变量名 | 说明 | 示例值 | +|--------|------|--------| +| `IMAGE_TAG` | 测试环境使用的 PostgreSQL 镜像(≤16 版本) | `postgres:16.10` | +| `IMAGE_TAG_V15` | PostgreSQL 15 镜像标签 | `postgres:15.14` | +| `IMAGE_TAG_V17` | PostgreSQL 17 镜像标签 | `postgres:17.6` | +| `IMAGE_TAG_V18` | 生产环境使用的 PostgreSQL 18 镜像标签 | `postgres:18.0` | +| `POSTGRES_PASSWORD` | 数据库超级用户密码 | `AGC4eGx2aq8rSiZXBP` | +| `POSTGRES_HOST_AUTH_METHOD` | 主机认证方式 | `scram-sha-256` | + +> ⚠️ **安全提示**:部署前请务必修改 `POSTGRES_PASSWORD` 为你自己的强密码,不要使用默认密码。 + +## 环境差异对比 + +| 配置项 | 生产环境 (`prod.stack.yml`) | 测试环境 (`test.stack.yml`) | +|--------|---------------------------|---------------------------| +| 项目名称 | `prod-dbs` | `test-dbs` | +| 容器名称 | `prod-postgres` | `test-postgres` | +| 镜像版本 | `IMAGE_TAG_V18`(PostgreSQL 18) | `IMAGE_TAG`(PostgreSQL 16) | +| 共享内存 | `256mb` | `128mb` | +| 数据卷路径 | `/var/lib/postgresql`(≥17 版本) | `/var/lib/postgresql/data`(≤16 版本) | + +> 📌 **注意**:PostgreSQL ≥17 版本的数据目录变更为 `/var/lib/postgresql`,≤16 版本为 `/var/lib/postgresql/data`,请根据版本正确挂载。 + +## 部署前准备 + +创建数据卷目录: + +```bash +mkdir -pv /data/volumes/postgres/data +``` + +## 部署命令 + +### 拉取镜像 + +**生产环境:** +```bash +docker compose --env-file ./dbSer/postgres/env.cfg -f ./dbSer/postgres/prod.stack.yml pull +``` + +**测试环境:** +```bash +docker compose --env-file ./dbSer/postgres/env.cfg -f ./dbSer/postgres/test.stack.yml pull +``` + +### 启动服务 + +**生产环境:** +```bash +docker compose -p prod-dbs --env-file ./dbSer/postgres/env.cfg -f ./dbSer/postgres/prod.stack.yml up -d +``` + +**测试环境:** +```bash +docker compose -p test-dbs --env-file ./dbSer/postgres/env.cfg -f ./dbSer/postgres/test.stack.yml up -d +``` + +## 连接信息 + +| 参数 | 值 | +|------|----| +| 主机 | `localhost` 或服务器 IP | +| 端口 | `5432` | +| 用户名 | `postgres` | +| 密码 | `env.cfg` 中 `POSTGRES_PASSWORD` 的值 | +| 认证方式 | `scram-sha-256` | + +连接示例: + +```bash +psql -h localhost -p 5432 -U postgres +``` + +## 数据持久化 + +数据库数据挂载在宿主机 `/data/volumes/postgres/data` 目录下,容器重建后数据不会丢失。 + +## 常用管理命令 + +```bash +# 查看运行状态 +docker compose -p prod-dbs ps + +# 查看日志 +docker compose -p prod-dbs logs -f postgres + +# 停止服务 +docker compose -p prod-dbs down + +# 重启服务 +docker compose -p prod-dbs restart +``` + +## 版本升级注意事项 + +- 从 PostgreSQL ≤16 升级到 ≥17 时,数据目录路径发生变化,需要迁移数据 +- 升级前请务必备份数据:`pg_dumpall -U postgres > backup.sql` +- 不支持跨大版本直接替换数据目录,需使用 `pg_upgrade` 或逻辑备份恢复