Files
doodle-store/infra/README.md
T

4.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 仅供服务端,服务端已读取 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/基线及服务端登录接口;现有库只登记迁移记录,不重复执行建表。