MongoDB,Docker,Meteor:拒绝连接

如果我运行“meteor”,meteor完美地工作。 如果我设置MongoDB并运行设置为“mongodb://127.0.0.1:27017 / meteor”的MONGO_URL的Meteor,那么它也可以很好地工作。 但是,如果我运行一个Docker容器,调用与上面设置的MONGO_URL相同的机器上完全相同的meteor文件,那么我得到的错误:asynchronous函数的callbackexception:错误:无法连接到[127.0.0.1: 27017]”。 Logic将指出,Docker的引入正在引发这个问题。 因此,有什么我必须做的,特别是允许meteor从一个容器内调用MongoDB – 比如MongoDB的端口等等。

Dockerfile是:

FROM ubuntu:14.04 MAINTAINER Me "me@me.com" RUN apt-get update -y && apt-get install --no-install-recommends -y -q chrpath libfreetype6 libfreetype6-dev libssl-dev libfontconfig1 RUN apt-get install --no-install-recommends -y -q build-essential ca-certificates curl git gcc make nano python ENV PATH /bin:/usr/local/sbin RUN curl install.meteor.com | sh ENV ROOT_URL 127.0.0.1 ENV PORT 3000 ENV MONGO_URL mongodb://127.0.0.1:27017/meteor EXPOSE 3000 CMD [ "meteor" ] RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

meteor被称为以下:

 docker run --name meteor-dev -it -p 3000:3000 -v /machine/meteor:/opt/meteor -w /opt/meteor meteor-dev 

当你运行一个容器时,它会创build一个独立于主机networking的networking。 所以当你用mongodb://127.0.0.1:27017 / meteor连接到Mongo时,它会在你的容器中searchMongoDB。

而不是使用127.0.0.1使用主机的IP地址或主机名。

或者,如果你的MongoDB是从一个容器运行创build一个链接,并使用链接启动meteor容器。 希望这可以帮助