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

docker-compose部署时Node.js容器无法连接Microsoft SQL Server报错如何解决

问题原因

API容器内的localhost指向的是API容器自身的网络命名空间,而非宿主机器或者MSSQL容器,所以配置localhost:1433无法连接到数据库服务。

解决方案

1. 修改数据库连接配置

Docker Compose 同自定义网络下的容器,可以直接用docker-compose.yml中定义的服务名作为主机名互相访问。你当前配置里数据库的服务名为db,所以直接修改ormconfig.json中的数据库host配置:

  • 把host字段值从localhost改为db
  • 端口保持1433不变,用户名填sa,密码填你配置的Abc123**

修改后的ormconfig.json示例:

{
  "type": "mssql",
  "host": "db",
  "port": 1433,
  "username": "sa",
  "password": "Abc123**",
  "database": "你的业务数据库名称",
  // 其余原有配置保持不变
}

补充说明:如果你是在宿主机本地直接调试NodeJS服务(不运行在容器内),才需要使用localhost作为数据库主机地址。

2. 优化启动顺序(可选)

当前配置的depends_on只会控制容器的启动顺序,不会等待MSSQL完全初始化完成再启动API,首次启动可能出现API先启动、数据库还没就绪导致连接失败的问题,你可以选择以下任意一种方式优化:

  • 在NodeJS代码中增加数据库连接重试逻辑,失败后间隔几秒重试
  • 给API容器增加启动等待脚本,等db:1433端口可访问后再启动NodeJS服务

3. 重启服务生效

修改配置后执行以下命令重启服务即可:

docker-compose down && docker-compose up --build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:36:06