Используя docker-compose, у меня запущено несколько контейнеров - один из них является контейнером профилировщика, который вызывает API, другой контейнер apiconnection должен получать вызов и отправлять информацию обратно.Однако, когда я запускаю файл compose, он всегда возвращает Get http://apiconnection:8080/maccaption: dial tcp: lookup apiconnection on 127.0.0.11:53: no such host
в контейнере Profiler в строке http.DefaultClient.Do
.
Это пример моего файла compose:
apiConnection:
image: apiconnection:1.0
ports:
- "8080:8080"
networks:
- maccaptionNet
profiler:
image: profiler:1.0
networks:
- maccaptionNet
depends_on:
- "apiConnection"
I 'Я вызываю API в моем изображении профилировщика следующим образом - он выдает ошибку DefaultClient
:
url := "http://apiconnection:8080/maccaption"
req, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Fatal(err)
}
res, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("Line 27")
log.Fatal(err)
}
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println("Line 33")
log.Fatal(err)
}
Если я изменю url := "http://apiconnection:8080/maccaption"
, чтобы посмотреть на localhost следующим образом url := "http://localhost:8080/maccaption"
он изменится на connect refused
,но я не думаю, что я должен смотреть на localhost, мне нужно посмотреть на контейнер Docker, не так ли?
Я устанавливаю URL как соединение с контейнером Docker и использую порты, которые я назначил в файле docker-compose.и получаю запрос в моем изображении apiconnection, как это:
r := mux.NewRouter()
r.HandleFunc("/maccaption", handleMaccaption).Methods("GET")
http.ListenAndServe(":8080", r)
Все, что он должен сделать сейчас, это запустить и сделать один запрос, чтобы доказать, что он работает, и вернуть некоторую информацию json.Этот код работает вне docker, заменяя имя контейнера в переменной url на localhost.Но я не могу запустить его в докере.
Я обратился к этим другим источникам за помощью, но безрезультатно: как вызвать конечную точку API внутри контейнера Docker? Выполнение REST-вызова к конечной точке в Dockers Docker - создание внутренней связи с использованием конечных точек
Будем весьма благодарны за любые указатели - спасибо!
** РЕДАКТИРОВАТЬ - чтобы исправить мое чудное форматирование кода