我已开始将 Docker 与 Stack 应用程序一起使用,但出现此错误 .MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:2

Posted

技术标签:

【中文标题】我已开始将 Docker 与 Stack 应用程序一起使用,但出现此错误 .MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017【英文标题】:I have starting using Docker with Stack application and I'm getting this error .MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017 【发布时间】:2021-12-22 19:21:39 【问题描述】:

我从星期一开始学习 docker,但我遇到了错误

这是 docker-compose.yml 代码

version: '3.9'

services:
  mongo:
    container_name: mongo
    image: mongo:latest
    restart: always
    ports:
      - 27017:27017
    volumes:
      - mongo_db:/data/db
  server:
    container_name: server
    restart: always
    build: ./server
    ports:
      - 5500:5500
    depends_on:
      - mongo

  client:
    container_name: client
    restart: always
    build: ./client
    ports:
      - 3000:3000
    depends_on:
      - server

volumes:
  mongo_db : 

Dockerfiles

服务器

FROM node:17-alpine

# make App Directory
WORKDIR /server

# Install Dependencies
COPY package*.json /.

RUN npm ci 

# Copy the current directory contents into the container at /client
COPY . .

# Exports
EXPOSE 5500

CMD ["npm","start"]

还有我的代码

const mongoose = require("mongoose");
mongoose
  .connect("mongodb://mongo:27017/blogapp", 
    useNewUrlParser: true,
    useUnifiedTopology: true,
  )
  .then(() => 
    console.log("connection success");
  )
  .catch((err) => 
    console.log(err);
  );

const blogSchema = new mongoose.Schema(
  title: 
    type: String,
    required: true,
  ,
  description: String,
  author: String
);

const Comment = new mongoose.model("Comment", blogSchema);

const Blog = new mongoose.model("blog", blogSchema);

const reactBlog = new Blog(
    title: "1st Blog",
      description: "This is  our first blog",
      author: "Aakash",
     
)

const userSchema = new mongoose.Schema(
    first_name:  type: String, default: null ,
    last_name:  type: String, default: null ,
    email:  type: String, unique: true ,
    password:  type: String ,
    city:type: String,
    token:  type: String ,
  );
  
  module.exports = mongoose.model("user", userSchema);
  );

发生了这个错误

服务器在端口 5500 上运行 服务器 | MongooseServerSelectionError:连接 ECONNREFUSED 127.0.0.1:27017 服务器 |在 NativeConnection.Connection.openUri (/node_modules/mongoose/lib/connection.js:796:32) 服务器 |在 /node_modules/mongoose/lib/index.js:330:10 服务器 |在 /node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5 服务器 |在新的 Promise () 服务器 |在 承诺或回调 (/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10) 服务器 |在 Mongoose._promiseOrCallback (/node_modules/mongoose/lib/index.js:1151:10) 服务器 |在 Mongoose.connect (/node_modules/mongoose/lib/index.js:329:20) 服务器 |在 Object.exports.connect (/server/config/database.js:7:4) 服务器 |在对象。 (/server/index.js:2:30) 服务器 |在 Module._compile (node:internal/modules/cjs/loader:1095:14) 服务器 |原因:拓扑描述 服务器 |类型: '未知',服务器 |服务器:地图(1)'localhost:27017'=> [服务器描述] ,服务器 |陈旧:假,服务器 | 兼容:真实,服务器 | heartbeatFrequencyMS:10000,服务器 | localThresholdMS:15,服务器 | logicalSessionTimeoutMinutes:未定义的服务器 | 服务器 |

【问题讨论】:

你能试试这个吗? ***.com/questions/60806014/… 这是另一个:github.com/docker/hub-feedback/issues/1255。尝试检查 mongod 是否在 mongo 容器内运行。 我都试过了,但还是不行。发生了同样的错误。 请分享您的 Nodejs dockerfile 并在问题本身中包含完整的异常消息 @OneCricketeer 正如你所建议的,我已经添加了代码。 【参考方案1】:

您必须使用 mongoDB 服务名称更改您的数据库 URL。在您的情况下,服务名称是mongo。试试下面的代码。

const mongoose = require("mongoose");
mongoose.connect("mongo://mongo:27017/blogapp", 
    useNewUrlParser: true,
    useUnifiedTopology: true,
  ).then(() => 
    console.log("connection success");
  ).catch((err) => 
    console.log(err);
  )

【讨论】:

尝试不工作我得到同样的错误 您在更改代码后尝试docker-compose up --build 吗? 是的,我已经尝试过了,我已经删除了基于该图像构建的所有容器并再次尝试,但没有任何效果。 这看起来和问题的代码一样 原码有这个mongodb://mongo:27017/blogapp

以上是关于我已开始将 Docker 与 Stack 应用程序一起使用,但出现此错误 .MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:2的主要内容,如果未能解决你的问题,请参考以下文章

Elastic:使用 Docker 安装 Elastic Stack 8.0 并开始使用

Elastic:使用 Docker 安装 Elastic Stack 8.0 并开始使用

Docker Compose与Docker Stack的不同之处

docker stack部署与mongo卷

docker swarm 集群服务编排部署指南(docker stack)

运用 Elastic Stack 收集 docker 容器日志