A。我有一个包含以下内容的容器
1. NodeJS
版本8.11.4
2. Rocketchat
流星应用
B。这是我的Dockerfile
FROM node:8.11.4
ADD . /app
RUN npm install -g node-gyp
RUN set -x \
&& cd /app/programs/server/ \
&& npm install \
&& npm cache clear --force
WORKDIR /app/
ENV PORT=3000 \
ROOT_URL=http://localhost:3000
EXPOSE 3000
CMD ["node", "main.js"]
C。这个命令执行得很好
docker build -t memo:1.0 .
当我尝试运行容器时,它在容器日志中遇到以下错误
{"log":"MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]\n","stream":"stderr","time":"2019-01-24T21:56:42.222722362Z"}
因此无法执行容器。
mongodb
正在运行,我已经在bindIp
文件中的mongod.conf
中添加了0.0.0.0。
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
我的mongodb
已安装在主机中(容器外部)
问题没有解决,我的容器状态为退出
我用IP代替了本地主机,但是遇到以下错误
{"log":"MongoNetworkError: failed to connect to server [192.168.0.198:27017] on first connect [MongoNetworkError: connect EHOSTUNREACH
答案 0 :(得分:2)
这里的问题是,您正在启动Docker容器(一个自包含的环境),然后尝试到达localhost:27017
。 但是,本地主机内部与您的容器外部(在主机上)不同。从这一点出发,您可以采用两种方法:
localhost:27017
,而要连接到主机的ip(例如192.x.x.x或10.x.x.x)docker-compose.yml
,其中一项服务是您的应用程序,另一项服务是mongodb。答案 1 :(得分:1)
MONGO_URL=mongodb://192.168.0.198:27017/rocketchat
时,还要将该IP添加到bindIp
。 MONGO_URL=mongodb://127.0.0.1:27017/rocketchat
我还建议在mongo config中启用安全授权。然后为数据库设置用户和密码。
请记住,对配置文件的任何更改都需要重启mongo