Go mgo.v2软件包错误:没有可访问的服务器

时间:2018-10-20 07:40:36

标签: mongodb docker go docker-compose mgo

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

mongod --auth

我可以使用以下终端通过终端连接服务器:

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

但是当我使用时:

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

它给我一个错误,提示{“错误”:“没有可访问的服务器”}。

我的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 :(得分:1)

问题似乎是您正在尝试连接到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外部访问容器时才需要这些。