У меня есть веб-интерфейс и веб-приложение api, и оба имеют поддержку docker, а вот файл docker для него.
version: '3.4'
services:
webfrontend:
image: ${DOCKER_REGISTRY-}webfrontend
build:
context: .
dockerfile: WebFrontEnd/Dockerfile
mywebapi:
image: ${DOCKER_REGISTRY-}mywebapi
build:
context: .
dockerfile: MyWebAPI/Dockerfile
Поскольку оба приложения используют одну и ту же сеть, поэтому внутренний DNS разрешается, и я могу получить доступ к веб-API из внешнего приложения, как показано ниже,
using (var client = new System.Net.Http.HttpClient())
{
// Call *mywebapi*, and display its response in the page
var request = new System.Net.Http.HttpRequestMessage();
request.RequestUri = new Uri("http://mywebapi/WeatherForecast");
var response = await client.SendAsync(request);
}
Здесь URL-адрес веб-API http://mywebapi/WeatherForecast
доступен ТОЛЬКО для внешнего приложения в коде (внутренне), но когда я пытаюсь просмотреть этот URL-адрес через браузер или почтальон, он не работает.
- В чем причина? (браузер или почтальон не в контейнерной сети?)
- как мы можем получить к нему доступ вне контейнера? Нужно ли мне использовать IP и порт или DNS, я также могу использовать?
- могу ли я получить доступ к тому же
http://mywebapi/WeatherForecast
снаружи?