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

3.5 KiB
Raw Blame History

本地 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 仅供服务端,当前 NestJS 骨架尚未读取 DATABASE_URL、接入 Prisma 或七牛。doodle_dev 已执行基线 SQL,原创建 10 张表及初始配置,2026-10-14 执行 004/005/006/007/008 后共有 13 张表;后续 Prisma schema/migrations 根据 v3.5 数据库设计 实施。开发角色为此本地集群的初始化管理员,生产运行角色权限在部署时单独设置,不复制本地账号密码到云服务器。

自动测试需要真实数据库时,使用同一本地 PostgreSQL 实例内独立 doodle_test 数据库及连接串,测试初始化流程另行实施。测试不得对 doodle_dev 或生产库执行清空数据操作;目前尚未创建测试库。

云端首期仅常驻生产库,测试联调按需隔离。详细安排与七牛资源隔离见 开发与部署环境方案。

建表 SQL 已生成并通过临时库验证,开发库已于 2026-10-12 完成初始化,其他空库执行步骤见 SQL 执行说明。Docker 启动只创建空数据库,不会自动执行这些业务表脚本。