MongoDB、Docker、流星:连接被拒绝

MongoDB, Docker, Meteor: Connection Refused

如果我 运行 "meteor",Meteor 将完美运行。如果我设置 MongoDB 和 运行 Meteor 并将 MONGO_URL 设置为 "mongodb://127.0.0.1:27017/meteor" 那么它也可以完美运行。但是,如果我 运行 一个 Docker 容器在同一台机器上调用完全相同的 Meteor 文件,并且 MONGO_URL 设置如上,那么我会得到错误:"Exception in callback of async function: Error: failed to connect to [127.0.0.1:27017]"。逻辑会指出 Docker 的引入导致了问题。因此,我必须做些什么来专门允许 Meteor 从容器内部调用 MongoDB - 例如 MongoDB 端口等的额外内容

Docker文件是:

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 

当您是 运行 容器时,它会创建自己的网络,该网络与主机网络隔离。 因此,当您使用“mongodb://127.0.0.1:27017/meteor 连接到 Mongo 时,它会在您的容器中搜索 MongoDB。

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

或者,如果您的 MongoDB 是来自容器的 运行,请创建一个 link 并使用 link 启动 meteor 容器。希望这有帮助