Docker Compose环境中Sentry无法捕获Laravel错误求助
排查Docker环境下Laravel无法连接Sentry的问题思路
确认Sentry容器的端口配置
- 进入Sentry容器,执行
netstat -tulpn或ss -tulpn,检查Sentry服务是否在0.0.0.0监听(而非仅127.0.0.1),并确认内部监听端口(默认通常是9000) - 核对Docker Compose中Sentry服务的
ports映射规则:如果外部用9090映射到容器内部9000,那么PHP容器(同网络内)必须用内部端口9000访问,而非宿主机的9090
- 进入Sentry容器,执行
验证容器间网络连通性
- 进入PHP容器,执行
ping sentry(替换为你的Sentry容器名),确认能解析到IP并正常连通 - 执行
docker network inspect app,检查Sentry和PHP容器是否都在app网络的容器列表中 - 确保Docker Compose中每个服务都明确配置了加入
app网络:networks: - app
- 进入PHP容器,执行
修正DSN配置并清除缓存
- 将DSN中的地址改为Sentry容器名,端口改为容器内部监听端口,例如:
http://c9ad8cf51cf04987f7817a38357a89d@sentry:9000/1 - 修改
.env后,执行php artisan config:clear清除Laravel配置缓存,再运行php artisan sentry:test测试
- 将DSN中的地址改为Sentry容器名,端口改为容器内部监听端口,例如:
检查Sentry项目配置
- 登录Sentry界面,确认项目ID与DSN末尾的
/1一致,且DSN中的公钥与项目公钥完全匹配 - 排查Sentry是否设置了IP白名单,阻止了来自
app网络的请求
- 登录Sentry界面,确认项目ID与DSN末尾的
查看日志定位细节
- 查看Sentry容器日志:
docker logs sentry,检查是否有连接拒绝或请求错误记录 - 查看Laravel日志
storage/logs/laravel.log,获取更具体的错误信息(如DNS解析失败、端口超时等)
- 查看Sentry容器日志:
直接测试容器内访问
- 进入PHP容器,执行
curl http://sentry:内部端口/api/1/store/(替换为实际内部端口),若返回400 Bad Request说明网络连通正常(缺少事件数据导致),若仍为连接拒绝则需检查Sentry服务是否正常启动
- 进入PHP容器,执行
内容的提问来源于stack exchange,提问作者chouxe
相关产品推荐
相关产品推荐

