尝试使用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
答案 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外部访问容器时才需要这些。