【问题标题】:Connection from Express App to MongoDB container refused with Docker-Compose从 Express App 到 MongoDB 容器的连接被 Docker-Compose 拒绝
【发布时间】:2018-08-22 08:13:43
【问题描述】:

当尝试使用 docker-compose 将我的 express 应用程序连接到 mongo 容器时,连接被拒绝。我可以使用 localhost:27017 和使用 dbSetup.js 的 l/p 设置通过 robo3T 连接到 db 容器,但是当 express 尝试连接时出现错误:

{ MongoNetworkError: 首次连接时无法连接到服务器 [mongo:27017] [MongoNetworkError: connect ECONNREFUSED 172.19.0.2:27017]

// mongoose
const options = {
  autoIndex: true, // Don't build indexes
  reconnectTries: Number.MAX_VALUE, // Never stop trying to reconnect
  reconnectInterval: 500, // Reconnect every 500ms
  poolSize: 10, // Maintain up to 10 socket connections
  // If not connected, return errors immediately rather than waiting for reconnect
  bufferMaxEntries: 0
};
console.log(options);
mongoose.connect('mongodb://blogUser:blogUserPassword@mongo/blog', options).then(
  () => { console.log("connected !!!"); },
  err => { console.log(err);  }
);

Docker-Compose

version: '3'

services:
  mongo:
    container_name: mongo
    image: mongo
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
    volumes:
      - ./dbSetup.js:/docker-entrypoint-initdb.d/dbSetup.js
      - /data/db:/data/db
    ports:
      - "27017:27017"

  blog_api:
    container_name: blog_api
    build: ../blog.com/api
    restart: always
    expose: 
      - 3000
    ports:
      - "3000:3000"
    links:
      - mongo
    depends_on:
      - mongo

【问题讨论】:

  • 如果你先启动mongo会发生什么?比如docker-compose up mongo,那么启动成功后,docker-compose up?
  • 这很神奇。谢谢。

标签: mongodb express docker docker-compose


【解决方案1】:

如果您可以在mongo 服务运行后运行该应用,这意味着与您的应用尝试连接时相比,mongo 启动和连接就绪所需的时间更长。如果您的应用没有永远连接,它可能无法正常重启 - 如果它没有连接,您可能希望它退出,然后确保您相应地设置了 Docker 重启策略(“始终” , “on-failure”等)见docs。假设 mongo 最终启动,您的应用最终将连接。

您还可以考虑使用healthchecks,在这种情况下,您可以查看数据库是否实际连接而不是启动。 depends_on 标志只会检查容器是否启动,它不会检查容器中的应用程序是否运行正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-23
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多