You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Sail配置容器化MS SQL Server连接失败求助

Laravel Sail 连接MS SQL Server 故障排查方案

1. 确认容器网络一致性

Laravel Sail默认使用sail专属网络,你的MS SQL容器必须加入这个网络才能和Sail容器通信:

  • 检查MS SQL容器的网络归属:docker inspect sql1 | grep Networks
  • 若不在sail网络,手动添加:docker network connect sail sql1
  • 之后.env里的DB_HOST直接写容器名sql1即可,不要用127.0.0.1/0.0.0.0(这两个是宿主机地址,容器间通信无需绕宿主机)

2. 排查MS SQL容器自身状态

  • 先确认容器正常启动:docker logs sql1,重点看是否有密码不符合复杂度、服务启动失败这类报错(MS SQL默认要求强密码)
  • 进入容器测试本地连接:docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 你的密码,如果连不上,说明容器内的SQL服务本身有问题,先解决这个

3. 端口绑定问题处理

你绑定1433端口时提示占用,说明宿主机已有其他程序(比如本地装的SQL Server)占用该端口:

  • 容器间通信不需要映射宿主机端口,直接去掉docker-compose.yaml里的1433端口映射配置即可
  • 如果非要映射给宿主机用,换个端口比如1434:1433,但容器间通信依然用容器名sql1,不用改DB_PORT

4. 验证Sail容器内的驱动安装

自定义Dockerfile添加驱动后,必须重新构建镜像确保驱动生效:

  • 执行sail build --no-cache,避免缓存导致驱动没装上
  • 进入Sail容器检查驱动:sail bash,然后运行php -m | grep sqlsrv,确认输出里有sqlsrv和pdo_sqlsrv两个模块

5. .env配置细节核对

确保SQL Server相关配置完全匹配:

DB_CONNECTION=sqlsrv
DB_HOST=sql1
DB_PORT=1433
DB_DATABASE=你的数据库名
DB_USERNAME=sa
DB_PASSWORD=你的强密码
  • 密码必须和MS SQL容器启动时的SA_PASSWORD完全一致,注意不要有空格或转义错误
  • 目标数据库要提前在MS SQL里创建好,或者确保SA用户有创建数据库的权限

内容的提问来源于stack exchange,提问作者Finchy70

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:25:54