Como conectar o back-end a um contêiner docker mongodb

Como conectar o back-end a um contêiner docker mongodb

Eu criei este arquivo docker-compose conforme escrito em docker hub/mongodb e então uso o comando docker-compose up -dque é bastante padrão para iniciar um contêiner.

# 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

Agora estou tentando conectar meu back-end a ele.

Com postresql seria algo como postgresql://root:example@localhost:8081/db_name

O que seria com mongo?

PS: Posso me conectar ao banco de dados em meu navegador em http://localhost:8081 mas não consigo me conectar ao banco de dados a partir da linha de comando com mongo.

Responder1

Depágina oficial do docker hub:

O servidor MongoDB na imagem escuta na porta padrão do MongoDB, 27017, portanto, conectar-se via redes Docker será o mesmo que conectar-se a um mongod remoto.

Você não declara de onde está se conectando e como. Se for outro contêiner, você poderá usar a porta diretamente, caso contrário, será necessário expô-la primeiro.

Quanto à string de conexão, geralmente é dodocumentos oficiais:

mongo mongodb://$[hostlist]/$[database]?authSource=$[authSource] --username $[username]

Você também pode usar o mongo-expresscontêiner usado para obter os detalhes acima ou no README do docker hub. Então, no seu caso:

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

Se o seu cliente não estiver em um contêiner docker na mesma pilha, você precisará expor a porta 27017 do primeiro mongodbcontêiner:

ports:
    - "27017:27017"

informação relacionada