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

Docker Compose中Go应用容器无法连接MSSQL容器问题排查

问题排查与解决

核心问题:容器间通信地址用错了

Go应用容器里用localhost/127.0.0.1连接数据库是错误的——每个Docker容器都有独立的网络栈,localhost指向容器自身,而非MSSQL容器。Docker Compose会自动为创建的服务分配DNS解析,直接用**服务名mssql**作为数据库连接地址即可。

额外注意:启动顺序不代表服务就绪

depends_on仅能保证MSSQL容器先于Go应用启动,但不保证SQL Server服务已经完全初始化完成、可以接受连接。虽然你的初始化脚本有重试逻辑,但Go应用启动时数据库可能还没准备好,建议在Go代码中添加数据库连接重试逻辑,循环尝试连接直到成功,再继续启动服务。

具体修改点

  1. 修正数据库连接字符串:把Go代码里的数据库地址从localhost/127.0.0.1替换成mssql,端口保持1433。示例连接字符串:
server=mssql;port=1433;user id=sa;password=Yukon_900;database=PlanningPoker;encrypt=disable

(如果启用了加密,需要调整对应配置,否则可能连接失败)

  1. 验证容器间网络连通性:可以进入Go应用容器执行ping mssql或telnet mssql 1433,确认能正常访问MSSQL服务,再调试应用连接问题。

  2. 可选:优化启动等待逻辑:如果需要更可靠的启动依赖,可以使用wait-for-it.sh这类工具,在Go应用启动前等待mssql:1433端口就绪,避免因数据库未初始化完成导致的连接失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:55:40