worktree-devproxy 用于搭建按 git worktree 隔离的并行 Web 开发环境。核心结构是:一个共享 Traefik + 每个 worktree 一个 compose 栈,通过 Host 头路由,访问地址为 http://<worktree>.<repo>.localhost:8000;浏览器经 SSH 隧道(:8000)连到只监听 127.0.0.1 的 Traefik,再转发到各 worktree 容器。除 Traefik 的 127.0.0.1:8000(web)与 127.0.0.1:8080(面板/API)外不占用宿主机端口,其余流量走共享外部网络 devproxy。worktree 隔离依靠 direnv 设置 COMPOSE_PROJECT_NAME,实现网络、卷和容器名独立。
一次性机器准备:需 docker(含 compose 插件)、git、direnv;把 dev-proxy.docker-compose.yml 放到 ~/dev-proxy/,创建 dynamic 目录并 docker compose up -d;将 scripts/wt 与 scripts/devproxy-route 装到 ~/bin。验证:curl -s --noproxy '*' localhost:8080/api/version 返回版本,curl localhost:8000 返回 404。
接入仓库需提交四部分:.envrc(设置 REPO、WORKTREE、COMPOSE_PROJECT_NAME、DEV_HOST)、带 Traefik 标签且不暴露端口的 docker-compose.yml、追加 $DEV_HOST 说明的 CLAUDE.md,以及相应脚本。服务需在容器内绑定 0.0.0.0,框架需允许 .localhost 主机。日常命令:wt new feat/xyz、wt rm feat/xyz、wt ls。也支持宿主机运行的栈通过 Traefik file provider 注册路由,与容器栈共存,但同一 worktree 不可同时用两种模式。文档还给出常见故障(502/504/403 等)及旧版 Traefik 与 Docker 29+ 不兼容等限制与排查方式。