Go mgo.v2 package error: no reachable servers

Go mgo.v2 package error: no reachable servers

正在尝试使用 mgo.v2 包连接到 mongodb 服务器。我已经使用以下命令启动了服务器:

mongod --auth

我可以使用终端连接到服务器:

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

但是当我使用:

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

它给我一个错误,说 {"error":"no reachable servers"}。

我的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

问题似乎是您正在尝试连接到 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 为您的容器创建一个 network,在其中它们可以使用您定义为主机名的名称相互访问。请注意,您不需要为容器相互访问定义 ports;这些只需要从外部到达容器 Docker.