Я использую опцию добавления докера в .NET Core, и у меня есть следующие автоматически сгенерированные launchSettings:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:49800",
"sslPort": 44327
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"WebApplication1": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
, а следующее docker-compose.override.yml
version: '3.4'
services:
webapplication1:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_HTTPS_PORT=44327
ports:
- "49800:80"
- "44327:443"
volumes:
- ${APPDATA}/ASP.NET/Https:C:\Users\ContainerUser\AppData\Roaming\ASP.NET\Https:ro
- ${APPDATA}/Microsoft/UserSecrets:C:\Users\ContainerUser\AppData\Roaming\Microsoft\UserSecrets:ro
networks:
default:
external:
name: nat
Docker автоматически открывает созданный им IP-адрес в https://172.20.167.220/ и время ожидания истекает.
Верх файла dockerfile выглядит следующим образом:
FROM microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-sac2016 AS base
WORKDIR /app
EXPOSE 49800
EXPOSE 44327
EXPOSE 443 #I added this line as an experiment
Я не уверен, какой IP-адрес и порт используются на самом деле, потому что launchSettings.json еще не имеет профиля "docker".единственный способ запустить приложение - выбрать Docker из кнопки отладки воспроизведения.Это приложение было создано с помощью основного шаблона Docker MVC.Это вызывает CreateDefaultBuilder в Program.cs, так что Kestrel работает на localhost: 5000/50001, который, как я полагаю, отображается на порты 49800 и 44327 с помощью iisintegration, созданной сборщиком по умолчанию, который затем должен быть сопоставлен с портами 80 и 443 докером на некоторых не-стандартный IP-адрес, который затем открывается.Я должен открыть порт брандмауэра в докере?
Я подозреваю, что, возможно, что-то здесь не так, когда я жестко закодировал сертификат безопасности в Program.cs
:
public static IWebHostBuilder CreateWebHostBuilder(string[] args ) =>
WebHost.CreateDefaultBuilder(args).UseKestrel(options=>
{
options.Listen(IPAddress.Loopback, 5000);
options.Listen(IPAddress.Loopback, 5001, listenOptions =>
{
listenOptions.UseHttps(@"C:\Users\ContainerUser\AppData\Roaming\ASP.NET\Https\WebApplication1.pfx", "bede5cf6-6b63-427a-8576-d3a137f51070");
});
}
)
Я подключился к контейнеру и что-то ещев настройках докера это не правильно, так как ничего не прослушивает порт 443 при запуске netstat и промежуточный iis, по-видимому, также не работает на 49800/44327.:
C:\app>netstat -a -b -n -o
Active Connections
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 4960
[svchost.exe]
TCP 0.0.0.0:4022 0.0.0.0:0 LISTENING 9804
[msvsmon.exe]
TCP 0.0.0.0:5985 0.0.0.0:0 LISTENING 4
Can not obtain ownership information
TCP 0.0.0.0:47001 0.0.0.0:0 LISTENING 4
Can not obtain ownership information
TCP 0.0.0.0:49152 0.0.0.0:0 LISTENING 9192
Can not obtain ownership information
TCP 0.0.0.0:49153 0.0.0.0:0 LISTENING 11208
[svchost.exe]
TCP 0.0.0.0:49154 0.0.0.0:0 LISTENING 10080
Can not obtain ownership information
TCP 0.0.0.0:49155 0.0.0.0:0 LISTENING 3884
[lsass.exe]
TCP 127.0.0.1:5000 0.0.0.0:0 LISTENING 8892
[dotnet.exe]
TCP 127.0.0.1:5001 0.0.0.0:0 LISTENING 8892
[dotnet.exe]
TCP 172.20.170.223:4022 172.20.160.1:54632 ESTABLISHED 5472
[msvsmon.exe]
TCP 172.20.170.223:49421 64.4.54.254:443 TIME_WAIT 0
TCP [::]:135 [::]:0 LISTENING 4960
[svchost.exe]
TCP [::]:4022 [::]:0 LISTENING 9804
[msvsmon.exe]
TCP [::]:5985 [::]:0 LISTENING 4
Can not obtain ownership information
TCP [::]:47001 [::]:0 LISTENING 4
Can not obtain ownership information
TCP [::]:49152 [::]:0 LISTENING 9192
Can not obtain ownership information
TCP [::]:49153 [::]:0 LISTENING 11208
[svchost.exe]
TCP [::]:49154 [::]:0 LISTENING 10080
Can not obtain ownership information
TCP [::]:49155 [::]:0 LISTENING 3884
[lsass.exe]
UDP 0.0.0.0:5353 *:* 10676
[svchost.exe]
UDP 0.0.0.0:5355 *:* 10676
[svchost.exe]
UDP [::]:5353 *:* 10676
[svchost.exe]
UDP [::]:5355 *:* 10676
[svchost.exe]