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

Docker-Compose部署下MongoDB连接失败问题求助

解决Docker Compose中MongoDB容器连接ECONNREFUSED问题

问题概述

用docker-compose部署服务时,game容器无法连接mongo2容器,报错:

MongoError: failed to connect to server [mongo2:27018] on first connect [MongoError: connect ECONNREFUSED 172.19.0.3:27018]

此前容器可正常运行,重建后出现连接失败。

错误原因

  1. MongoDB端口配置错误:官方MongoDB镜像默认监听27017端口,但当前配置中mongo2的端口映射写为27018:27018,容器内的MongoDB根本没在27018端口启动,容器间访问该端口自然被拒绝。
  2. 冗余配置:Docker Compose v3版本中,同一网络下的服务默认可以通过服务名直接访问,links配置属于冗余,可移除。

修正后的docker-compose.yaml

version: '3'
services:
  app:
    image: chaseloyd/portfolio-site:latest
    ports:
      - "3000:3000"
  mongo2:
    image: mongo
    container_name: mongo2
    restart: always
    ports:
      - "27018:27017"  # 主机27018端口映射到容器内默认的27017端口,保留外部访问需求
  game:
    image: chaseloyd/multiplayer-game:latest
    ports:
      - "3030:3030"
    # 移除links,同一compose网络下直接用服务名mongo2访问即可

修正后的连接代码

容器间连接要使用MongoDB容器内的默认端口27017,而非主机映射的27018端口:

var mongoose = require("mongoose");
mongoose.connect("mongodb://mongo2:27017/db");

验证步骤

  1. 停止并删除现有容器:
docker-compose down
  1. 重新启动服务:
docker-compose up -d
  1. 查看mongo2容器日志,确认MongoDB正常启动:
docker logs mongo2

日志中出现waiting for connections on port 27017即为正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:22:40