Docker - Пн go Экземпляр БД не соединяется с приложением - PullRequest
0 голосов
/ 02 мая 2020

Я использую docker mon go с моим в качестве pnet основного приложения , но я не могу установить соединение с mongodb, который работает под контейнером. Хотя я могу подключить компас MongoDB GUI с MongoDB, работающим под docker Но мое приложение не подключается. Вот мои шаги

Сначала я вытягиваю Пн go Изображение БД

docker pull mongo:latest

Затем я создаю сетевой мост для пн go

docker network create --driver bridge mongo_db

enter image description here

Затем я запускаю mon go образ с сетью моста

docker run -d -p 27017:27017 --net=mongo_db --name mongodb mongo

после описанных выше шагов я создал свой файл образа aspnetcore

docker build -t lmsapp / v2.

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /app
EXPOSE 5000
EXPOSE 5001

COPY ["SharedKernal/SharedKernal.csproj", "SharedKernal/"]
COPY ["LMS.Entities/LMS.Entities.csproj", "LMS.Entities/"]
COPY ["LMS.Core/LMS.Core.csproj", "LMS.Core/"]
COPY ["LMS.Infrastructure/LMS.Infrastructure.csproj", "LMS.Infrastructure/"]
COPY ["LMS.Web/LMS.Web.csproj", "LMS.Web/"]

RUN dotnet restore "LMS.Web/LMS.Web.csproj"

COPY . .
WORKDIR "/app/LMS.Web"

CMD [ "/bin/bash","-c","dotnet restore && dotnet watch run" ]

и на последнем шаге я запускаю свой пользовательский образ, используя следующую команду

docker run -d --net=mongo_db --name lms -p 5000:5000 -p 5001:5001 -v "$(pwd):/app".ToLower() -w "/app/LMS.Web" lmsapp/v2

Теперь, когда я просматриваю приложение, я не могу подключиться к mon go. Вот моя строка подключения

"ConnectionString": "mongodb://localhost:27017"

Я пробовал другую версию строки подключения, но ни одна не работает, кроме одной

"ConnectionString": "mongodb://0.0.0.0:27017"
"ConnectionString": "mongodb://127.0.0.1:27017"
"ConnectionString": "mongodb://api:27017"

Когда я нахожу IP-адрес контейнера и попробуйте подключить mon go только к моему приложению, тогда оно будет работать

"ConnectionString": "mongodb://172.1.8.1:27017"

Но я могу успешно подключить компас MongoDB GUI с запущенным экземпляром mon go в контейнере.

В чем проблема всего этого?

1 Ответ

1 голос
/ 02 мая 2020

Строка подключения должна быть mongodb://CONTAINER_NAME, поэтому mongodb://mongo в вашем случае.

Вот команда, которая будет работать с вашей настройкой и запускать клиента mon go, просто чтобы продемонстрировать балл:

$ docker run --rm -it --net=mongo_db mongo mongo "mongodb://mongodb"

Вы можете облегчить себе жизнь, если работаете с docker compose. Вот рабочий пример:

version: '3'

volumes:
  mongodb:

services:
  mongo:
    image: mongo
    ports: ["27017:27017"] # only needed if you need access from the host
    volumes:
    - mongodb:/data/db

  client:
    image: mongo
    depends_on: [mongo]
    entrypoint: mongo
    command: mongodb://mongo

Запуск с:

$ docker-compose up -d mongo
$ docker-compose run client
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...