5.8 KiB
5.8 KiB
name, overview, todos, isProject
| name | overview | todos | isProject | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Docker 环境 Cursor 规则 | 建议把 Docker 开发环境信息写成 Cursor 规则,但单独一条、尽量简短;优先放在 slot 项目级规则,只有跨多个仓库共用同一套 Docker 时才放到用户级规则。 |
|
false |
Docker 环境是否写入 Cursor 规则
结论
值得写进 Cursor 规则,但不必和 backend-layering.mdc 混在同一条里,也不必默认全部塞进「用户级 + alwaysApply」。
原因:Agent 在帮你跑 php、composer、artisan、迁移、单测、连 Redis/MySQL 时,若不知道服务在容器里,常会错误地在宿主机执行,或连错端口(例如 MySQL 映射是 3309:3306)。
用户级 vs 项目级:怎么选
| 放置位置 | 路径 | 适用场景 |
|---|---|---|
| 项目级(推荐) | 例如在 slot 多根工作区根目录建 .cursor/rules/dev-environment.mdc |
只有 slot / www/slot 相关仓库用这套 Docker |
| 用户级 | ~/.cursor/rules/dev-environment.mdc |
多个不相关项目都共用 /Users/ray/Documents/project/docker/docker-compose.yml |
你当前用户级只有分层规范一条,且 alwaysApply: true。Docker 信息属于运行环境,和编码规范是不同关注点:
- 分层规则:继续
alwaysApply: true(跨项目仍有用) - Docker 规则:建议
alwaysApply: false,或仅在 slot 工作区用项目级规则;避免在写前端、文档、Figma 时也占用上下文
当前 slot 工作区下没有 .cursor/rules/,更适合为 slot 单独加一条 dev-environment.mdc。
规则里应写什么(可操作、短)
根据你的 docker-compose.yml,建议只写 Agent 执行命令时必需 的信息:
- Compose 位置:
/Users/ray/Documents/project/docker/docker-compose.yml - 容器名 → 用途(执行命令用
docker exec,不要用宿主机 PHP/CLI):php82— PHP 8.2(slot 后端主环境,按你实际版本确认)php72— PHP 7.2(若有老项目)goMysql— MySQL 8(容器内3306,宿主机3309)redis—6379;goredis— 宿主机6378
- 挂载路径:宿主机
/Users/ray/Documents/project→ 容器内/app(项目在容器内路径如/app/www/slot/backend) - 命令约定(示例,按你项目真实入口改):
- PHP:
docker exec -w /app/www/slot/backend php82 php ... - Composer / artisan:同样在
php82内、对应working_dir执行 - MySQL CLI:
docker exec -it goMysql mysql -uroot -proot ...(或注明用宿主机127.0.0.1:3309)
- PHP:
- 明确禁止/避免:不要在 macOS 宿主机直接跑
php/composer(除非已确认本机也有同版本环境)
不建议写进规则的内容:
- 完整
docker-compose.yml复制(冗长、易过期) - 所有服务密码细节(compose 里已有;规则里写「以 compose 为准」即可)
- RabbitMQ、Milvus 等与当前 slot 任务无关的服务(除非经常用到)
与现有文档的关系
- Cursor 规则:给 Agent 的「默认假设」,每次对话自动带上(按
alwaysApply/globs) - 仓库 README /
docs/dev-setup.md:给人看的完整说明;规则可写一句「详细步骤见 xxx」
两者可并存:规则 15–30 行,文档可更长。
建议的规则骨架(项目级示例)
---
description: Slot 本地 Docker 开发环境(PHP / MySQL / Redis)
alwaysApply: true
---
# Local Dev (Docker)
- Compose: `/Users/ray/Documents/project/docker/docker-compose.yml`
- Host project root: `/Users/ray/Documents/project` → container `/app`
- Run PHP/Composer/Artisan inside container `php82`, not on macOS host.
- MySQL: container `goMysql`; from host use `127.0.0.1:3309`.
- Redis: container `redis`, host port `6379`.
- Example: `docker exec -w /app/www/slot/backend php82 php artisan ...`
若放在用户级,把 alwaysApply 改为 false,或标题改成「Project docker (ray)」以免污染非 slot 项目。
推荐决策
flowchart TD
Q[多个仓库共用同一套 Docker?]
Q -->|是| UserRule["~/.cursor/rules/dev-environment.mdc\nalwaysApply: false"]
Q -->|否 仅 slot| ProjRule["www/slot/.cursor/rules/dev-environment.mdc\nalwaysApply: true 在该工作区"]
Both[保留 backend-layering 在用户级 alwaysApply]
UserRule --> Both
ProjRule --> Both
对你当前情况:slot 多仓库工作区 + Docker 在 project/docker,优先项目级规则;仅当你打开的其他 Cursor 工作区(非 slot)也依赖同一 compose 时,再复制一份到用户级。
下一步(你确认后可执行)
- 在
www/slot/.cursor/rules/新建dev-environment.mdc(约 20 行) - 确认 slot 后端默认用
php82还是php72,以及各子服务在容器内的working_dir - 可选:在
docs/增加dev-setup.md供人查阅,规则里链过去
无需修改现有的 backend-layering.mdc。