当前位置: 首页 > 面试题库 >

Node / Express应用无法连接到docker mongodb

谢海阳
2023-03-14
问题内容

我想运行一个使用express并连接到(boot2docker)docker mongo容器的节点应用程序

当我第一次编写应用程序时,我使用的是本地安装的mongodb实例,并且以下配置有效:

module.exports = {
  env: 'development',
  mongo: {
    uri: 'mongodb://localhost/fullstack-dev'
  }
};

它按预期运行。

现在,我尝试将其替换为mongo的docker实例。

因此,我已完成以下步骤以使mongo运行:

$ docker pull mongo:latest
$ docker run -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles
$ docker ps

#my mongo instance is 442c2541fe1a
$ docker exec -it 442c2541fe1a bash
$ mongo

此时,似乎正在我的命令提示符下运行。

然后,我尝试获取在osx上运行docker的boot2docker vm的IP:

$ boot2docker ip
# the IP returned: 192.168.59.103

因此,然后,我去掉了nodejs配置中的旧mongodb路径到以下内容:

module.exports = {
  env: 'development',
  mongo: {
    uri: 'mongodb://192.168.59.103:27017/fullstack-dev'
  }
};

当我运行该应用程序时,出现连接错误。

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: failed to connect to [192.168.59.103:27017]

将我的MEAN堆栈应用程序与docker’ified mongodb实例连接的正确配置是什么?


问题答案:

您需要使用以下-p参数在容器上发布适当的端口:

docker run -p 27017:27017 -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles

这将使主机(您的情况下为VM)上的端口27017可访问,并将流量转发到容器上的端口27017。



 类似资料:
  • 尝试连接到 Node Express 应用程序时,我在浏览器中收到“无法连接”错误。在(我的服务器 IP 地址)1.1.1.1:5000。该应用程序在我的开发环境中工作正常,但在我的 AWS EC2 Linux 服务器上无法正常工作。 Node Express应用程序在dev中的我的计算机上运行 端口5000允许传入TCP。我用一个较小的应用程序(https://hackernoon.com/de

  • 问题内容: 我能够使用主机“ nash-pc \ sqlexpress”的SQL Server Management Studio连接到本地计算机上的MSSQL 2008 Express。但是,当我连接Microsoft JDBC驱动程序时,它给了我类似下面的错误。JDBC在主机名中有’'的问题吗?我不确定如何使主机名成为“ localhost”,而不是“ nash-pc \ sqlexpress

  • 我有Microsoft SQL Server 2014 Express在我的本地计算机Windows 7 PC上运行。 我使用Python,使用SQL alchemy可以毫无问题地连接到服务器(从同一台PC)。我还可以使用Excel和PowerPivot加载项进行连接。 然而,我无法连接Pentaho-Ketter。 我已经从微软下载了JDBC驱动程序:https://www.microsoft.

  • 我生成了一个。我的SpringMVC Maven Hibernate MySQL应用程序的war文件,该应用程序在本地主机和本地MySQL数据库上运行良好。我配置数据库的方式是通过WebAppConfig。查看应用程序的java文件。属性文件并检索适当的信息。 然后我创建了一个OpenShift帐户并部署了它。war文件。我添加了MySQL和PHPMyAdmin盒带,以便维护数据库。当我试图通过我

  • 问题内容: 我在Windows 10计算机上安装了SQL Server 2016 Express,适用于Windows的docker和IIS。 SQL Server Express配置为在1455端口上侦听。罗斯文(Northwind)示例数据库在那里。 Windows防火墙已禁用。 显示以下内容: 我在Visual Studio 2017中创建了一个非常简单的.net core 2控制台应用程序

  • 本文向大家介绍浅析node连接数据库(express+mysql),包括了浅析node连接数据库(express+mysql)的使用技巧和注意事项,需要的朋友参考一下 操作是在ubuntu系统的下环境,简单记录一下过程。 首先用apt-get安装数据库,键入命令 sudo apt-get install mysql-server , 一路回车,然后在一个界面设置一下数据库root的密码就好了 在数