Почему основное шаблонное приложение .Net с поддержкой Docker не отвечает по IP-адресу, созданному Docker - PullRequest
0 голосов
/ 10 июня 2018

Я использую опцию добавления докера в .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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...