
Eu criei este arquivo docker-compose conforme escrito em docker hub/mongodb e então uso o comando docker-compose up -d
que é 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-express
contê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 mongodb
contêiner:
ports:
- "27017:27017"