Cómo conectar el backend a un contenedor acoplable mongodb

Cómo conectar el backend a un contenedor acoplable mongodb

Hice este archivo Docker-Compose tal como está escrito en Docker Hub/mongodb y luego uso el comando docker-compose up -dque es bastante estándar para iniciar un contenedor.

# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

bf4a595a508d   mongo-express   "tini -- /docker-ent…"   About an hour ago   Up About an hour   0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   intake-app_mongo-express_1
b5fcc2d2386d   mongo           "docker-entrypoint.s…"   About an hour ago   Up About an hour   27017/tcp                                   intake-app_mongo_1

Ahora estoy intentando conectar mi backend.

Con postresql sería algo así como postgresql://root:example@localhost:8081/db_name

¿Qué pasaría con mongo?

PD: puedo conectarme a la base de datos en mi navegador web en http://localhost:8081 pero no puedo conectarme a la base de datos desde la línea de comando con mongo.

Respuesta1

Desde elpágina oficial de Docker Hub:

El servidor MongoDB en la imagen escucha en el puerto estándar MongoDB, 27017, por lo que conectarse a través de redes Docker será lo mismo que conectarse a un mongod remoto.

No indica desde dónde se conecta ni cómo. Si es otro contenedor, puede usar el puerto directamente; de ​​lo contrario, primero deberá exponerlo.

En cuanto a la cadena de conexión, generalmente es deldocumentos oficiales:

mongo mongodb://$[lista de hosts]/$[base de datos]?authSource=$[authSource] --nombre de usuario $[nombre de usuario]

También puede utilizar el mongo-expresscontenedor que utilizó para obtener los detalles anteriores o desde el archivo README de Docker Hub. Entonces en tu caso:

mongodb://root:example@mongo:27017/

Si su cliente no está en un contenedor acoplable en la misma pila, debe exponer el puerto 27017 del primer mongodbcontenedor:

ports:
    - "27017:27017"

información relacionada