执行git commit命令触发Docker报错:no such service: php
解决git commit时提示"no such service: php"的问题
可能原因
这个错误大概率是**Git钩子(Git Hook)**导致的——你的项目里可能配置了pre-commit或类似的钩子脚本,脚本中执行了依赖Docker PHP服务的命令(比如代码检测、格式化工具),但当前环境中Docker的PHP服务不存在或未启动。
解决方案
1. 临时禁用Git钩子排查问题
进入项目的.git/hooks目录,查看是否存在pre-commit、commit-msg等可执行脚本:
ls -la .git/hooks
如果发现相关钩子脚本,先重命名禁用它,再尝试提交:
mv .git/hooks/pre-commit .git/hooks/pre-commit.bak
之后执行git commit -m "some"或用GitHub Desktop提交,验证是否还报错。
2. 修复钩子的Docker依赖
如果钩子是项目必需的(比如用于代码校验),按以下步骤处理:
- 检查项目根目录的
docker-compose.yml,确认是否定义了php服务 - 若存在
php服务,先启动对应的Docker容器:
docker-compose up -d php
- 若没有
php服务定义,要么修改钩子脚本移除依赖Docker PHP的命令,要么补充对应的Docker服务配置。
3. 检查全局Git钩子
少数情况是全局Git钩子导致的,先查看全局钩子路径:
git config --get core.hooksPath
如果返回了具体路径,进入该目录检查是否有相关钩子脚本,按上述方法处理即可。
内容的提问来源于stack exchange,提问作者Александр Куликов
相关产品推荐
相关产品推荐

