Как подключиться к контейнеру MONGODB с помощью веб-приложения golang внутри другого контейнера - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть веб-приложение на Голанге, использующее mongodb.Я создаю два контейнера: один для my_app, а другой для mongodb.Я использую официальный mongo-go-driver / mongo.

var client *mongo.Client

//create a mongo.Client
client, err = mongo.NewClient("mongodb://localhost:27017")
//client, err = mongo.NewClient("mongodb://my_first_mongodb:27017")
//client, err = mongo.NewClient("mongodb://:27017")
if err != nil {
    log.Printf("could not create a mongo client:  %v", err)
    panic(err)
}

//connect it to your running MongoDB server
ctx1, cancel1 := context.WithTimeout(context.Background(), 120*time.Second)
defer cancel1()

//Connect initializes the Client by starting background monitoring goroutines.
err = client.Connect(ctx1)
if err != nil {
    log.Printf("could not connect with mongodb:  %v", err)
    panic(err)
}

fmt.Println("trying to start mongodb for my app")
ctx2, cancel2 := context.WithTimeout(context.Background(), 120*time.Second)
defer cancel2()
err = client.Ping(ctx2, nil)
if err != nil {
    log.Printf("no ping to mongo db could not connect with mongodb:  %v", err)
    panic(err)
}

Моя проблема в том, что я не знаю, как получить (подключить) адрес ip (localhost) mongodb внутри контейнера.если я использую

client, err = mongo.NewClient("mongodb://localhost:27017")

не работает.но если внутри docker-compose я устанавливаю имя контейнера (my_first_mongodb) и использую этот код:

client, err = mongo.NewClient("mongodb://my_first_mongodb:27017")

все в порядке и работает.

my docker-compose

Проблема этого решения заключается в следующем: поскольку имена контейнеров Docker должны быть уникальными, вы не можете масштабировать службу за пределами 1 контейнера, если вы указали пользовательское имя.Попытка сделать это приводит к ошибке здесь .

Любая помощь, пожалуйста.Спасибо

...