Files
ulthon_admin/.agents/rules/ulthon-deploy-environment.md
augushong 1620af9ff2 refactor(stack): 删除 stack.json,README 改为模板使用指南
- 删除 source/stack/stack.json(与 README 模式表重复,无实际用途)
- README 新增使用方式说明:可直接用,推荐复制后自定义
  (admin:update 只更新原始模板,不覆盖开发者副本)
- 同步清理 ulthon-deploy-environment.md 和
  ulthon-update-workflow SKILL.md 中对 stack.json 的引用
- ulthon-deploy-environment.md 补充记录义务规则:
  智能体应确认 project-dev-runtime-deploy.md 是否已记录运行方式,
  必须包含命令执行方式(容器内 vs 宿主机)
2026-07-23 22:01:38 +08:00

2.8 KiB
Raw Blame History

部署环境与命令执行

来源框架内置ulthon- 作用域:部署配置、命令执行环境判断 触发条件:执行 php think 命令、配置部署模式、切换运行环境时加载

部署栈模式

  • source/stack/ 为模式文件统一目录(含 default/ 与各模式目录)
  • default/ 必须与代码库默认行为一致
  • 默认行为相关文件变更时需同步更新 source/stack/default/ 对应文件

运行模式判断B-route 工作流)

执行 php think 命令前必须先判断当前运行模式。B-route 工作流下,模式由"当前所在目录"决定,不再覆盖仓库根目录。

判断方式:检查仓库根目录是否含 Docker 文件(Dockerfile / docker-compose.yaml)。

  • 根目录无 Docker 文件default 模式):宿主机直接执行 php think
    • 默认基线行为是 php think runThinkPHP 内置服务器)。
    • 启动开发服务器:在仓库根目录执行 php think run
  • 需要 Docker 模式:进入对应模式目录启动栈。
    • 启动:cd source/stack/<mode>docker compose up -d
    • 模式目录内的 docker-compose.yaml 是该模式的栈定义bind mount 通常指向仓库根目录。
    • 在容器外执行 php thinkdocker compose -f source/stack/<mode>/docker-compose.yaml exec <service> php think ...,或在模式目录内 docker compose exec <service> php think ...
    • 示例:docker compose -f source/stack/docker-dev/docker-compose.yaml exec ulthon_admin php think tools:http:call
  • 可用模式source/stack/README.mddefault / docker-serve / docker-dev / docker-dev-sync / full / author 等)。
  • 判断技巧:如果不确定当前是否处于容器内,看 pwd 是否在仓库根、根目录有无 Dockerfiledocker ps 是否有相关容器在跑。容器内执行 php think 不需要前缀。

记录义务

当开发者确定/选择了项目的运行方式(无论是否使用框架预设的 stack 模式),智能体应当确认 .agents/rules/project-dev-runtime-deploy.md 中是否已记录该选择。如果未记录或内容仍为模板占位符,提醒开发者补充或协助填写。

记录内容不限定格式,开发者用一两句话写清楚"本项目用 xxx 方式运行"即可,无需详细参数列表。但必须包含一个关键信息:命令执行方式——即 php think 等命令应当在哪里执行。例如:

  • Docker 模式:命令在容器内执行(docker compose exec <service> php think ...),不是宿主机直接 php think
  • 宿主机模式:命令直接在仓库根目录执行
  • 宝塔/其他:按实际环境的执行路径记录

目的是让后续会话中的智能体能从规则文件快速了解项目的实际运行方式和命令执行入口,而不需要重新询问或猜测。