.net ядро ​​веб-API-приложение с https в докере - PullRequest
0 голосов
/ 11 февраля 2019

У меня самое простое приложение Web Api в ядре .net (с api / значениями по умолчанию api, которые вы получаете при создании)

Я включил HTTPS, так что в отладке он работает, и отчеты kestrel:

Hosting environment: Development
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000

Когда я запускаю приложение в докере (используя предоставленный MS докер-файл), kestrel сообщает, что прослушивает только порт 80

Hosting environment: Production
Now listening on: http://[::]:80

Как настроить приложение для прослушивания по httpsа также в докере?

1 Ответ

0 голосов
/ 11 февраля 2019

Убедившись, что в вашем приложении Dockerfile есть EXPOSE 5001, используйте эту команду для запуска приложения:

sudo docker run -it -p 5000:5000 -p 5001:5001
-e ASPNETCORE_URLS="https://+443;http://+80"
-e ASPNETCORE_HTTPS_PORT=5001
-e ASPNETCORE_Kestrel__Certificates__Default__Password="{YOUR_CERTS_PASSWORD}"
-e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/{YOUR_CERT}.pfx
-v ${HOME}/.aspnet/https:/https/
--restart=always
-d {YOUR_DOCKER_ID}/{YOUR_IMAGE_NAME}

ОБНОВЛЕНИЕ:

Просто используйтесамоподписанный сертификат для отладки, вот пример для Kestrel:

WebHost.CreateDefaultBuilder(args)
    .UseKestrel(options =>
    {
        options.Listen(IPAddress.Loopback, 5000);  // http:localhost:5000
        options.Listen(IPAddress.Any, 80);         // http:*:80
        options.Listen(IPAddress.Loopback, 443, listenOptions =>
        {
            listenOptions.UseHttps("certificate.pfx", "password");
        });
    })
    .UseStartup<Startup>()
    .Build(); 
...