Go ошибка пакета mgo.v2: нет доступных серверов - PullRequest
0 голосов
/ 20 октября 2018

Попытка использовать пакет mgo.v2 для подключения к серверу mongodb.Я запустил сервер, используя:

mongod --auth

Я могу подключиться к серверу с помощью терминала, используя:

$ mongo -u "username" -p "password" --authenticationDatabase "db"

Но когда я использую:

mgo.Dial("mongodb://usernamer:password@127.0.0.1:27017/dbname")

Это дает мне ошибку, говорящую {"error": "серверы недоступны"}.

Мой docker-compose.ymlфайл как показано ниже

version: "2"
services:
  todo:
    build:
      context: .
      dockerfile: todo/Dockerfile
    restart: always
    volumes:
    - .:/go/src/prac
    container_name: todo
    ports:
    - 8800:8081
  mongodb:
    command: mongod --auth
    container_name: mongodb
    image: mongo:latest
    ports:
    - 27017:27017

1 Ответ

0 голосов
/ 20 октября 2018

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

mgo.Dial("mongodb://usernamer:password@127.0.0.1:27017/dbname")

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

mgo.Dial("mongodb://usernamer:password@mongodb:27017/dbname")

Docker Compose создает сеть для ваших контейнеров, в которой они могут обращаться друг к другу, используя имена, которые вы определили как имена хостов.Обратите внимание, что вам не нужно определять ports для контейнеров, чтобы достичь друг друга;они нужны только для доступа к контейнерам снаружи Docker.

...