我在本地机器上运行MongoDB作为独立服务器。我的快速应用程序可以很好地连接到它,除非它在容器中运行。在我的连接字符串中,我尝试使用我的机器的IP,localhost和127.0.0.1但都没有工作。我还尝试了绑定端口270170.0.0.0在mongo配置文件,但也没有工作。最后,我尝试在docker run命令中使用--net="host"选项,但没有用。这是我运行容器时得到的错误:
MongoNetworkError:在第一次连接时未能连接到服务器[127.0.0.1:27017]。[错误:connect-EConRefuse127.0.0.1:27017]
DOCKER文件
FROM node
RUN mkdir -p /usr/src/rapidrecipes
COPY server.js /usr/src/rapidrecipes/server.js
COPY deploy-package.json /usr/src/rapidrecipes/package.json
WORKDIR /usr/src/rapidrecipes
RUN npm install
EXPOSE 80
EXPOSE 27017
EXPOSE 3000
CMD ["node", "server.js"]
运行命令
docker运行-p 80:80-p27017:27017-p 3000:3000 rapid食谱
服务器JS文件摘录
var express = require('express');
var cors = require('cors');
var path = require('path');
var bodyParser = require('body-parser');
var mongo = require('mongoose');
const uuid = require('uuid');
var db = mongo.connect("mongodb://127.0.0.1:27017/recipedb", function (err, response) {
if (err) { console.log(err); }
else { console.log('Connected to ' + db, ' + ', response) }
});
Docker内置了“dns”支持,这意味着容器可以通过名称找到彼此,只要它们在同一个网络中!
创建网络:docker网络创建my-net
现在您需要将容器连接到此网络,在运行容器时使用--network[network name]
标志。像这样:
docker run——网络我的网络——命名食谱mongo mongo
docker run-dp 80:80-p 3000:3000------------------------------------------------------------------------------------------------
现在将应用程序中的连接字符串更改为
mongo://recipes-mongo/
我没有在这里打开mongo数据库的外部端口,因为它是不需要的,但是如果你愿意,请添加
-p27017:27017
标志。我还猜到了你的应用程序需要什么端口,请自己验证!
注意:如果在主机上本地运行数据库,则应该能够使用主机ip,而不是0.0.0.0,而是在本地网络上分配的ip(例如192.168.x.x),通过命令
ifconfig
或ipconfig
问题内容: 遵循此示例:https : //docs.docker.com/engine/examples/mongodb/ 当尝试使用以下命令连接到mongoDB时:( 其中ip是boot2docker ip的名称)+ docker ps的端口号: 27017 / tcp 或-P 0.0.0.0:49155->27017/tcp 无论哪种方式,我都会收到以下错误: 警告:无法连接到ip:2701
问题内容: docker-compose文件: 我已在dockerfile中注释掉EXPOSE 4200,因为我已经从docker- compose.yml文件中挂载了它,不是吗,我应该在dockerfile中公开并在docker-compose中挂载吗? 在命令行上运行npm start可以在浏览器中成功启动该应用程序,因为我可以转到该应用程序并查看其运行情况。 但是,如果我使用docker构建
问题内容: 我创建了一个Dockerfile在Docker内部运行Docker: 启动容器并运行docker ps后,我得到:“无法通过unix:///var/run/docker.sock连接到Docker守护程序。Docker守护程序正在运行吗?” 我在容器内执行了命令dockerd: 错误启动守护程序:错误初始化网络控制器:错误获取控制器实例:无法创建NAT链DOCKER:iptables失
问题内容: 我有去grpc服务。我正在开发Mac,塞拉利昂。在本地针对服务运行grpc客户端时,一切都很好,但是在Docker容器中针对相同服务运行相同的客户端时,出现此错误: 这是我的docker文件: 我的命令来建立图像: 我的命令启动Docker容器: 其他资讯: 客户端程序可以在Docker容器中正常运行 连接到常规的休息端点可以正常工作(http2,与grpc相关吗?) 在OS X中运行
我有go grpc服务。我在mac电脑上开发,塞拉。当针对本地服务运行grpc客户机时,一切都很好,但当针对docker容器中的相同服务运行相同客户机时,我会出现以下错误: 下面是我的服务器代码片段:
我创建了一个Dockerfile来在Docker中运行Docker: 启动容器并运行docker ps后,我得到:“无法连接到unix:///var/run/docker.sock.docker守护程序是否正在运行?" 我在容器中执行了命令dockerd,结果是: 启动守护程序时出错:初始化网络控制器时出错:获取控制器实例时出错:未能创建NAT链DOCKER:iptables失败:iptables