本地 PostgreSQL 开发环境
参考 atlas-seller-kit/infra 的 Docker 数据库 + 宿主机应用模式,只运行 PostgreSQL。图片、头像、字体等直接使用七牛,不启动 Redis、MinIO 或本地文件服务器。
启动
从 doodle-store 根目录执行:
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 项目的独立命名卷,停止容器保留数据,不影响参考项目。
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 编码。
postgresql://doodle_dev:<URL编码后的本地密码>@127.0.0.1:5434/doodle_dev?schema=public
根 .env 仅供 Compose;apps/server/.env 仅供服务端,服务端已读取 DATABASE_URL 并接入 Prisma,七牛仍待实施。doodle_dev 已执行基线 SQL,原创建 10 张表及初始配置,2026-10-14 执行 004/005/006/007/008 后共有 13 张表;Prisma schema/migrations 已接入,根据 v3.5 数据库设计 实施。开发角色为此本地集群的初始化管理员,生产运行角色权限在部署时单独设置,不复制本地账号密码到云服务器。
自动测试需要真实数据库时,使用同一本地 PostgreSQL 实例内独立 doodle_test 数据库及连接串,当前 pnpm test:db 使用脚本创建的随机命名短期库,结束后自动删除,不创建常驻测试库。测试不得对 doodle_dev 或生产库执行清空数据操作。
云端首期仅常驻生产库,测试联调按需隔离。详细安排与七牛资源隔离见 开发与部署环境方案。
建表 SQL 已生成并通过临时库验证,开发库已于 2026-10-12 完成初始化,其他空库执行步骤见 SQL 执行说明。Docker 启动只创建空数据库,不会自动执行这些业务表脚本。
本地状态复核(2026-10-15)
doodle_dev已存在且容器健康,连接地址为127.0.0.1:5434,PostgreSQL 18.6、UTF-8、C 排序规则、UTC。- 在独立临时参考库执行最新 002/003,对照开发库的表、字段定义、约束、索引及注释,全部一致;忽略字段物理顺序。共 13 张表、135 个字段、41 个索引;无需重新执行建表或增量 SQL。
page_configs/current与settings/homeAutoRefresh均已初始化,版本为 0,自动刷新 enabled=true;其余 11 张表为空,尚未导入线上数据。- 已将服务端
.env中 DATABASE_URL 的密码与现有本地数据库凭据对齐,验证宿主机端口可达及 TCP 密码连接成功;未输出密钥,保留其他服务端配置。 - 开发库只读核对,未重建或清空;临时参考库已删除。随后已接入 Prisma Schema/基线及服务端登录接口;现有库只登记迁移记录,不重复执行建表。