Files
doodle-store/infra/README.md
T
2026-10-15 10:09:34 +08:00

55 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 本地 PostgreSQL 开发环境
参考 `atlas-seller-kit/infra` 的 Docker 数据库 + 宿主机应用模式,只运行 PostgreSQL。图片、头像、字体等直接使用七牛,不启动 Redis、MinIO 或本地文件服务器。
## 启动
从 `doodle-store` 根目录执行:
```bash
cp .env.example .env
# 编辑 .env,替换 POSTGRES_PASSWORD 为本地密码。
pnpm infra:up
pnpm infra:status
```
已有 `.env` 时保留现有文件,不重复复制。`infra:up` 显式加载根目录 `.env` 并等待健康检查,不依赖 Compose 文件所在目录寻找环境变量。镜像固定为参考项目使用的 `postgres:18.6-alpine`,升级时显式修改标签,不使用 latest。
| 连接项 | 默认值 |
| -------------- | ---------------------------------- |
| 主机 | 127.0.0.1 |
| 宿主机端口 | 5434(避免与参考项目的 5433 冲突) |
| 数据库 | doodle_dev |
| 用户 | doodle_dev |
| 密码 | 根目录 `.env` 中 POSTGRES_PASSWORD |
| 编码 / 时区 | UTF-8 / UTC |
| Compose 项目名 | doodle-store-dev |
端口只绑定本机回环地址;数据库客户端可用上述配置连接。postgres-data 是此 Compose 项目的独立命名卷,停止容器保留数据,不影响参考项目。
```bash
pnpm infra:logs
pnpm infra:psql
pnpm infra:down
```
`infra:psql` 在容器内通过本地 socket 打开 SQL 控制台;宿主机数据库客户端通过 TCP 连接并使用密码。`infra:down` 不删除命名卷。没有提供自动删除数据的 reset 命令。
POSTGRES_DB、POSTGRES_USER、POSTGRES_PASSWORD 只在空数据卷首次初始化时创建数据库/角色。修改 `.env` 不会自动修改已有数据库密码,也不会把已有卷迁移到新 PostgreSQL 主版本;已有库应通过 SQL 管理角色,升级先备份并演练恢复。
## 服务端连接
服务端在宿主机通过 `pnpm dev` 启动,连接串放 `apps/server/.env`。参考该目录 `.env.example`,将用户名、密码、端口和库名与根 `.env` 对齐;密码有特殊字符时先做 URL 编码。
```text
postgresql://doodle_dev:<URL编码后的本地密码>@127.0.0.1:5434/doodle_dev?schema=public
```
根 `.env` 仅供 Compose;`apps/server/.env` 仅供服务端,当前 NestJS 骨架尚未读取 DATABASE_URL、接入 Prisma 或七牛。doodle_dev 已执行基线 SQL,原创建 10 张表及初始配置,2026-10-14 执行 004/005/006/007/008 后共有 13 张表;后续 Prisma schema/migrations 根据 [v3.5 数据库设计](../docs/v3.5/数据库设计文档.md) 实施。开发角色为此本地集群的初始化管理员,生产运行角色权限在部署时单独设置,不复制本地账号密码到云服务器。
自动测试需要真实数据库时,使用同一**本地** PostgreSQL 实例内独立 `doodle_test` 数据库及连接串,测试初始化流程另行实施。测试不得对 doodle_dev 或生产库执行清空数据操作;目前尚未创建测试库。
云端首期仅常驻生产库,测试联调按需隔离。详细安排与七牛资源隔离见 [开发与部署环境方案](../docs/v3.5/开发与部署环境方案.md)。
建表 SQL 已生成并通过临时库验证,开发库已于 2026-10-12 完成初始化,其他空库执行步骤见 [SQL 执行说明](../apps/server/prisma/sql/README.md)。Docker 启动只创建空数据库,不会自动执行这些业务表脚本。