首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >docker-节点和mongo之间的组合连接

docker-节点和mongo之间的组合连接
EN

Stack Overflow用户
提问于 2018-10-30 00:02:24
回答 5查看 396关注 0票数 0

我读了很多关于使用docker连接应用程序的例子,看起来很简单

我的情况就是这样

代码语言:javascript
运行
复制
version: '2'

services:

  mongodb:
    image: mongo
    container_name: infra-mongodb
    restart: always
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=admin
    ports:
      - 27017:27017
  service:
    build:
      context: .
    container_name: service
    restart: always
    ports:
      - 3012:3012
    depends_on:
      - mongodb
    links:
      - mongodb

我在节点中的连接是

代码语言:javascript
运行
复制
const MongoClient = require('mongodb').MongoClient;
const mongoUrl = 'mongodb://admin:admin@mongodb:27017/admin?replicaSet=rs0&slaveOk=true'
MongoClient.connect(mongoUrl, { useNewUrlParser: true }, (err, client) => {
    console.log(err)
});

我有以下错误

代码语言:javascript
运行
复制
{ MongoNetworkError: failed to connect to server [9d574801e4b4:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND 9d574801e4b4 9d574801e4b4:27017]
    at Pool.<anonymous> (/usr/src/app/node_modules/mongodb-core/lib/topologies/server.js:564:11)
    at emitOne (events.js:116:13)
    at Pool.emit (events.js:211:7)
    at Connection.<anonymous> (/usr/src/app/node_modules/mongodb-core/lib/connection/pool.js:317:12)
    at Object.onceWrapper (events.js:317:30)
    at emitTwo (events.js:126:13)
    at Connection.emit (events.js:214:7)
    at Socket.<anonymous> (/usr/src/app/node_modules/mongodb-core/lib/connection/connection.js:246:50)
    at Object.onceWrapper (events.js:315:30)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
  name: 'MongoNetworkError',
  errorLabels: [ 'TransientTransactionError' ],
  [Symbol(mongoErrorContextSymbol)]: {} }

我不明白为什么主机变成了9d574801e4b4

当我在容器中运行ping mongodb时,一切都很正常

代码语言:javascript
运行
复制
PING mongodb (172.21.0.3) 56(84) bytes of data.
64 bytes from infra-mongodb.app-admin_default (172.21.0.3): icmp_seq=1 ttl=64 time=0.088 ms
64 bytes from infra-mongodb.app-admin_default (172.21.0.3): icmp_seq=2 ttl=64 time=0.101 ms
64 bytes from infra-mongodb.app-admin_default (172.21.0.3): icmp_seq=3 ttl=64 time=0.102 ms
64 bytes from infra-mongodb.app-admin_default (172.21.0.3): icmp_seq=4 ttl=64 time=0.216 ms
^C
--- mongodb ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3156ms
rtt min/avg/max/mdev = 0.088/0.126/0.216/0.053 ms
EN

Stack Overflow用户

发布于 2019-05-05 02:43:29

无法看到docker-compose up日志,但是。今天也有类似的问题。用我写的一个小脚本就解决了。wait-for-mongo在您的dockerfile文件中添加以下内容:

代码语言:javascript
运行
复制
RUN npm install -g wait-for-mongodb-slim

## Launch the wait tool and then your application
CMD wait-for-mongo --uri $MONGO_URI --t 2.5 && npm start

其中--t是它再次检查之前的秒数。

在compose上,将uri作为环境变量添加:

代码语言:javascript
运行
复制
environment:
   MONGO_URI: mongodb://usr:pw@containername:27017/dbname
票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53049436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档