У меня была та же проблема, потому что она должна проходить через DockerNAT.(Может быть, не каждый получает этот IP-адрес)
Вот как я решил свою проблему:
- Открыть командную строку
- Введите ipconfig
Вы получите что-то вроде этого.
Конфигурация Windows IP
Адаптер Ethernet vEthernet (DockerNAT):
DNS-суффикс для конкретного соединения.:
IPv4-адрес.,,,,,,,,,,: 10.0.75.1
Маска подсети.,,,,,,,,,,: 255.255.255.240
Шлюз по умолчанию.,,,,,,,,:
В основном скопируйте этот IP-адрес в файл docker-compose.yml
services:
webmvc:
build:
context: .\src\Web\WebMvc
dockerfile: Dockerfile
environment:
- IdentityUrl=http://10.0.75.1:5000/ #Change IP and Port
container_name: test
ports:
- "5200:80"
networks:
- frontend
depends_on:
- tokenserver #your identityserver4 service
Другие вещи, которые нужно проверить:
Убедитесь, что в ваших файлах Startup.cs в ConfigureServices (проект WebMvc) у вас есть следующее и что они правильно написаны в вашем файле yml.
var identityUrl = Configuration.GetValue<string>("IdentityUrl");
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options => {
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = identityUrl.ToString();
options.SignedOutRedirectUri = "http://localhost:5200/"; //Change to your mvc address
options.ClientId ="mvc";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.RequireHttpsMetadata = false;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("offline_access");
options.TokenValidationParameters = new TokenValidationParameters()
{
NameClaimType = "name",
RoleClaimType = "role"
};
});
В дополнение к этому вы можете открыть порты на вашем брандмауэре.В моем случае мне пришлось открыть порт 5000.
a.Открытая панель управления
b.Система и безопасность
c.Брандмауэр Защитника Windows
d.Расширенные настройки
e.Настройки входящих сообщений => Новое правило.
f.Тип правила => Порт ==> Нажмите Далее
g.Выберите TCP по протоколу
h.Определенные локальные порты => Введите 5000
i.Нажмите Далее => Выбрать Разрешить соединение
j.Нажмите Next
k.Я оставил все отмеченными в разделе Когда применяется правило?
l.Нажмите Next => Введите Docker Port => Нажмите Finish