2016-03-03 129 views
1

我正在试验docker,并反映了从nodejs(4.2.3)容器到mongodb(3.2)容器的非常慢的连接。从节点到mongodb的连接速度很慢

我的设置,非常简单,就是这个(泊坞窗-撰写):

version: '2' 

services: 
    web: 
    build: ./app 
    volumes: 
     - "./app:/src/app" 
    ports: 
     - "80:3000" 
    links: 
     - "db_cache:redis" 
     - "db:mongodb" 
    command: nodemon -L app/bin/www 

    db_cache: 
    image: redis 
    db: 
    image: mongo 

我S.O.是OSX 10.10和码头版本是1.10.2。

奇怪的是连接数据库的时间总是30秒。

有没有自动延迟?

编辑:

如果我设置的MongoDB容器这一翻译了 “DNS”(mongodb)的IP地址,延迟消失!

任何想法?

+0

节点应用程序的连接字符串是什么?它是通过IP地址还是通过在DNS中查找的名称?对于后者,慢速连接解析通常是没有定义这样的条目的反向查找区域问题。在这种情况下不是一个编程问题。 –

+0

url字符串是'mongodb:// mongodb:27017/dockertest'阅读文档docker这是推荐的方法。 – Lughino

回答

0

这并不能完全解决问题,但它可以让你恢复正常的行为。

原因似乎是docker-compose.yml的版本2。

如果我删除版本2连接到MongoDB中时,完全消除了30秒的延迟:

web: 
    build: ./app 
    volumes: 
    - "./app:/src/app" 
    ports: 
    - "80:3000" 
    links: 
    - "db_cache:redis" 
    - "db:mongodb" 
    command: nodemon -L app/bin/www 

db_cache: 
    image: redis 
db: 
    image: mongo 

我开了一个问题here