Capaz de conectarse a MongoDB corriendo en un contenedor Docker localmente, pero no desde otro contenedor

Básicamente lo que dice el título: puedo conectarme a mi database MongoDB que se ejecuta localmente en un contenedor Docker, pero no puedo hacerlo desde otro contenedor Docker. Recibo el error "MongoError: no se pudo conectar al server {dirección del server}: 27017 en la primera connection"

Aquí está mi file de configuration:

const mongoose = require('mongoose'); mongoose.Promise = global.Promise let mongoURI = { development: 'mongodb://{server address}:27017/database, } const db = mongoose.connect(mongoURI.development, function(err, res) { if(err) { console.log('Error connecting to the database. ' + err); } else { console.log('Connected to Database: ' + mongoURI.development); } }); module.exports = db; 

No está claro a partir de su pregunta en qué configuration de los contenedores Docker está trabajando. Hay un par de posibilidades:

  1. Dos contenedores Docker, uno ejecutando una image MongoDB y otro ejecutando su aplicación, unidos mediante la opción --link .

Suponiendo que le haya dado un nombre al contenedor Mongo a través de la opción --name , debe poder acceder al MongoDB a través del nombre del contenedor: mongodb://{container name}:27017/database .

  1. Dos contenedores Docker NO vinculados con la opción --link .

En este caso, deberá haber expuesto el puerto MongoDB en el contenedor Mongo con la opción -p Y proporcionado el contenedor de la aplicación con una dirección IP de su mongodb://{docker host IP}:27017/database Docker: mongodb://{docker host IP}:27017/database . Tenga en count que localhost no funcionará, ya que dentro de su contenedor de aplicaciones localhost se referirá al contenedor de la aplicación. Puede configurar una input en /etc/hosts para darle un nombre a su host Docker.

  1. MongoDB corriendo en un contenedor; aplicación que se ejecuta en el host Docker (u otro server).

Esto es solo una variación del n. ° 2 anterior. Nuevamente, debe exponer los puertos y asegurarse de que la aplicación sepa cómo encontrar el host donde se está ejecutando el contenedor MongoDB. En este caso, podría usar localhost si la aplicación se está ejecutando en el host Docker.

Resuelto, debería haber especificado esto antes: Mi configuration era los dos contenedores no vinculados con la opción –link, y el puerto MongoDB expuesto. El problema era que mi empresa usa un proxy, y no lo estaba desactivando correctamente cuando me conecté a un server que se ejecuta en nuestro dominio.