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.
正在尝试使用 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.