У меня два контейнера Docker.
- TestWeb (Разоблачение: 80)
- TestAPI (выставлено: 80)
Контейнер Testweb вызывает контейнер TestApi. Хост может связываться с контейнером TestWeb через порт 8080. Хост может связываться с TestApi, используя 8081.
Я могу заставить TestWeb вызывать TestApi в моем окне разработчика (Windows 10), но когда я развертываю код в AWS (ECS), я получаю исключение «неизвестный хост». Оба контейнера работают нормально, и я могу вызывать их по отдельности. Но когда я вызываю метод, который внутренне выполняет вызов Rest с использованием HttpClient для метода в Container2, он выдает ошибку:
Произошла ошибка при отправке запроса. ---> System.Net.Http.CurlException: не удалось разрешить имя хоста.
Код:
using (var client = new HttpClient())
{
try
{
string url = "http://testapi/api/Tenant/?i=" + id;
var response = client.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
var responseContent = response.Content;
string responseString = responseContent.ReadAsStringAsync().Result;
return responseString;
}
return response.StatusCode.ToString();
}
catch (HttpRequestException httpRequestException)
{
return httpRequestException.Message;
}
}
Вот что я пробовал:
Два контейнера (TestWeb, TestAPI) находятся в одном определении задачи в AWS ECS. Когда я проверяю контейнеры, я получаю IP-адрес каждого из контейнеров. Я могу пинговать container2 из контейнера1 с их IP-адресом. Но я не могу пинговать, используя имя контейнера2. Это дает мне ошибку "неизвестный хост".