- uv(workspace) + pnpm monorepo;docker-compose(pg+api+web) - SQLAlchemy 16 MVP 表 + Alembic 初版迁移(无漂移,users stub) - FastAPI 骨架:统一错误信封(带 request_id) + structlog + /jobs/:id + OpenAPI - Next.js 骨架:纸感主题 token + OpenAPI→TS 客户端代码生成(gen:api) - CI(ruff/mypy/pytest + pg service + alembic 漂移校验) - 四份设计规格(PRODUCT/UX/ARCHITECTURE/DEV_PLAN) + CLAUDE.md
44 lines
893 B
YAML
44 lines
893 B
YAML
services:
|
|
pg:
|
|
image: postgres:16-alpine
|
|
environment:
|
|
POSTGRES_USER: writer
|
|
POSTGRES_PASSWORD: writer
|
|
POSTGRES_DB: writer
|
|
ports:
|
|
- "5432:5432"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U writer"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 10
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
|
|
api:
|
|
build:
|
|
context: .
|
|
dockerfile: apps/api/Dockerfile
|
|
environment:
|
|
DATABASE_URL: postgresql+asyncpg://writer:writer@pg:5432/writer
|
|
DATABASE_URL_SYNC: postgresql+psycopg://writer:writer@pg:5432/writer
|
|
APP_ENV: dev
|
|
ports:
|
|
- "8000:8000"
|
|
depends_on:
|
|
pg:
|
|
condition: service_healthy
|
|
|
|
web:
|
|
build:
|
|
context: ./apps/web
|
|
environment:
|
|
NEXT_PUBLIC_API_BASE: http://localhost:8000
|
|
ports:
|
|
- "3000:3000"
|
|
depends_on:
|
|
- api
|
|
|
|
volumes:
|
|
pgdata:
|