У меня есть простая программа, написанная на golang, которая подключается к экземпляру mongodb следующим образом:
func main() {
session, err := mgo.Dial("localhost:27017")
if err != nil {
panic(err)
}
defer session.Close()
session.SetMode(mgo.Monotonic, true)
ensureIndex(session)
}
Я использую docker compose, чтобы раскрутить два контейнера, один, чтобы раскрутить мой GOLANG API, а другой, чтобы раскрутить Монго:
version: "3.3"
services:
api:
image: golang:latest
volumes:
- .:/go
working_dir: /go
environment:
- GOPATH=/go
command:
go run /go/src/main.go
ports:
- "8082:8000"
depends_on:
- db
networks:
- api-net
db:
build: .
expose:
- '27017'
container_name: 'mongo'
ports:
- "27017:27017"
networks:
- api-net
networks:
api-net:
driver: bridge
Я использую Dockerfile для раскрутки mongo с помощью файла conf, который устанавливает привязку экземпляра ко всем сетям IPV4 и IPV6:
FROM mongo:latest
COPY mongod.conf /etc/mongod.conf
CMD mongod --config /etc/mongod.conf##
и это файл mongod.conf:
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
Когда я запускаю docker-compose.up, я получаю следующее:
Building db
Step 1/3 : FROM mongo:latest
---> a0f922b3f0a1
Step 2/3 : COPY mongod.conf /etc/mongod.conf
---> Using cache
---> f270e718c11e
Step 3/3 : CMD mongod --config /etc/mongod.conf
---> Running in 89ffc2495a2a
Removing intermediate container 89ffc2495a2a
---> fe2677d53122
Successfully built fe2677d53122
Successfully tagged carsupermarket_db:latest
WARNING: Image for service db was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating mongo ... done
Creating carsupermarket_api_1 ... done
Attaching to mongo, carsupermarket_api_1
api_1 | panic: no reachable servers
api_1 |
api_1 | goroutine 1 [running]:
api_1 | main.main()
api_1 | /go/src/main.go:38 +0x291
api_1 | exit status 2
Я просмотрел Google и stackoverflow, и единственное, что мне удалось найти, неопределенно связанное с моей проблемой, это:
mongod --bind_ip с использованием docker-compose version 2
однако, мой файл docker-compose.yml в том виде, в котором он стоит «Должен» на бумаге.
Может кто-нибудь указать мне правильное направление, почему мой код GOLANG не может найти мой экземпляр mongodb.