Как подключить бэкэнд к контейнеру Docker mongodb

Как подключить бэкэнд к контейнеру Docker mongodb

Я создал файл docker-compose, как написано на docker hub/mongodb, а затем использую команду, docker-compose up -dкоторая довольно стандартна для запуска контейнера.

# 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

Теперь я пытаюсь подключить к нему свой бэкэнд.

С postresql это будет что-то вроде postgresql://root:example@localhost:8081/db_name

Что будет с Монго?

PS: Я могу подключиться к базе данных в моем веб-браузере по адресу http://localhost:8081, но не могу подключиться к базе данных из командной строки с помощью mongo.

решение1

Изофициальная страница docker hub:

Сервер MongoDB на изображении прослушивает стандартный порт MongoDB, 27017, поэтому подключение через сети Docker будет таким же, как и подключение к удаленному mongod.

Вы не указываете, откуда и как вы подключаетесь. Если это другой контейнер, то вы можете использовать порт напрямую, в противном случае вам нужно сначала его раскрыть.

Что касается строки подключения, то она обычно изофициальные документы:

mongo mongodb://$[список_хостов]/$[база_данных]?authSource=$[authSource] --username $[имя_пользователя]

Вы также можете использовать mongo-expressконтейнер, который вы использовали для получения подробностей выше, или из README docker hub. Так что в вашем случае:

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

Если ваш клиент не находится в контейнере Docker в том же стеке, вам необходимо открыть порт 27017 из первого mongodbконтейнера:

ports:
    - "27017:27017"

Связанный контент