Невозможно получить доступ к mongodb внутри контейнера docker - PullRequest
0 голосов
/ 25 апреля 2020

В настоящее время я упаковываю свою заявку в docker. У меня есть два изображения, одно для моего приложения узла, а другое для mongodb. У меня есть вторая ссылка с использованием docker -compose. Но всякий раз, когда я пытаюсь получить доступ к mongodb внутри контейнера, используя порт 27017. Но он выглядит так: **

Похоже, вы пытаетесь получить доступ к MongoDB через HTTP через собственный порт драйвера.

** У меня есть конфигурация mongodb как:

 "url": "mongodb://mongoDB/astroDB"

Мой docker -компонентный файл имеет вид:

version: '3.0'
services:
web:
    image: astrobot-node
    build: .
    command: "yarn start"
    ports: 
        - "80:3601"
    depends_on:
        - "mongo"
mongo:
    image: mongo
    ports:
        - "27017:27017"

Может кто-нибудь сказать мне, что на самом деле не так. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

стандартный URL-адрес подключения mangodb должен выглядеть следующим образом

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]] https://docs.mongodb.com/manual/reference/connection-string/

В вашем случае mongoDB в вашем URL Строка должна указывать на хост db. Чтобы он указывал на контейнер mangodb, вы должны изменить его на "url": "mongodb://mongo/astroDB", потому что ваша служба называется man go, а не mangoDB .

этого также можно добиться, предоставив статический IP-адрес c вашему контейнеру и записав этот IP-адрес напрямую, вы также можете найти свой IP-адрес контейнера, используя docker container inspect <container-IP> для его проверки вручную.

РЕДАКТИРОВАТЬ

Вот тема, которая должна помочь вам отладить вашу проблему. https://forums.docker.com/t/how-mongodb-work-in-docker-how-to-connect-with-mongodb/44763/8

0 голосов
/ 25 апреля 2020

Но всякий раз, когда я пытаюсь получить доступ к mongodb внутри контейнера, используя порт 27017. Но он выглядит так: **

It looks like you are trying to access MongoDB over HTTP on the native driver port.

Это ожидаемое поведение, если вы пытаетесь отправить HTTP-запросы в порт MongoDB. Это говорит мне о том, что вы выяснили свое сетевое подключение и эта часть работает правильно.

Далее вам просто нужно использовать драйвер MongoDB для связи с базой данных из приложения вместо того, чтобы нажимать на нее curl или аналогичный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...