Saltar al contenido

Conexión al contenedor docker mongo desde el host

Ya no necesitas buscar más por internet ya que estás al lugar indicado, tenemos la solución que necesitas y sin complicarte.

Solución:

¿El código de node.js se ejecuta desde un contenedor o desde el host?

Si está en el host, solo use la dirección localhost, es decir:

var url = 'mongodb://localhost:27017';

Esto funcionará porque publicaste el puerto con -p 27017:27017.

Si el código se ejecuta dentro de un contenedor, sería mejor reescribirlo para usar enlaces y referirse al contenedor mongo por su nombre, por ejemplo:

var url = 'mongodb://mongo:27017';

Luego, cuando inicie el contenedor con el código Node.js, puede hacer algo como:

docker run -d --link mongo:mongo my_container

Docker luego agregará una entrada a /etc/hosts dentro del contenedor para que el nombre mongo se resuelve en la IP del contenedor mongo.

Si usa una red definida por el usuario, debería poder recogerla sin vincular o especificar 27017

const MONGO_NAME_STR = "mongodb://" + "your_docker_container_name";
var db = ;

mongo_client.connect(MONGO_NAME_STR, function(err, _db)
  //some err handling
  db = _db;
);

Otra opción para cualquiera que use docker-compose

version: '3.1'
services:
  mongo:
    image: mongo
    container_name: "mongo"
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - './dockervolume/mongodb:/data/db'
    ports:
      - 27017:27017

Y puedes conectarte usando la url string

    MongoClient.connect("mongodb://root:[email protected]:27017")
        .then(()=>
            console.log("db connect success");
        )
        .catch((err)=>
            throw err
        );

Si conservas alguna sospecha y capacidad de aclarar nuestro sección eres capaz de escribir una referencia y con mucho gusto lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *