Windows系统Docker中Git钩子无法运行问题求助
Git post-checkout钩子执行Docker数据库迁移的问题解决建议
问题根源
Git钩子是在非交互式后台环境中运行的,你用的docker exec -it里的-t参数会要求分配TTY终端,但钩子执行时没有可用的TTY设备,这就是引发一系列"tty相关"错误的核心原因。
具体修复方案
直接修改.git/hooks/post-checkout文件,做两个关键调整:
- 移除
docker exec命令中的-t参数(迁移脚本一般无需交互,可直接删掉-it,仅保留-i或全删) - 去掉
winpty前缀(钩子环境不需要模拟TTY)
修改后的钩子文件内容:
docker exec casfid-enterticket-src-1 php db/migrate.php status pending
如果你的迁移脚本确实需要读取标准输入(极少场景),可以保留-i参数:
docker exec -i casfid-enterticket-src-1 php db/migrate.php status pending
额外检查点
- 确保钩子文件有可执行权限,在Git Bash中执行:
chmod +x .git/hooks/post-checkout - 确认容器名称
casfid-enterticket-src-1正确,运行docker ps检查容器是否处于运行状态
内容的提问来源于stack exchange,提问作者Luis Martin
相关产品推荐
相关产品推荐

