У меня была ваша проблема некоторое время назад, вот как я ее исправил. Вам нужно указать --server.urls
в качестве рабочего аргумента, как показано ниже:
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Service.API.dll", "--server.urls", "http://+:80;https://+:443"]
А откуда взялись эти 5000
и 5001
?
Конфигурация конечной точки Kestrel
По умолчанию ядро ASP.NET связывается с:
http://localhost:5000
https://localhost:5001 (при местном развитии
сертификат есть)
Обновление 1:
В соответствии с вашей конфигурацией docker-compose вы установили для ASPNETCORE_ENVIRONMENT
значение Development
. Я думаю, вы должны изменить его на Production
, потому что при включении Development
ASP.NET Core
будет считывать настройки с launchSettings.json
.
Среда разработки может включать функции, которые не должны предоставляться в производство. Например, шаблоны ASP.NET Core включают страницу исключений разработчика в среде разработки.
Среду для разработки локальной машины можно настроить в
Свойства \ launchSettings.json файл проекта. Ценности окружающей среды
установить в launchSettings.json значения переопределения, установленные в системе
окружающая среда.
Насколько я помню, портами по умолчанию для Kestrel
являются 80
и 443
в каждом значении по умолчанию launchSettings.json
.
Если вам нужно запустить свой проект в режиме development
на Docker, вам следует изменить конфигурацию внутри launchSettings.json
, но я думаю, что это не рекомендуется, и лучше изменить режим на Production
.
service.api:
build:
context: .
dockerfile: src/Services/Service.API/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Production
- ASPNETCORE_URLS=http://+:80;https://+:443
- ASPNETCORE_HTTPS_PORT=5254
- ASPNETCORE_Kestrel__Certificates__Default__Password=crypticpassword
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
ports:
- "5204:80"
- "5254:443"
volumes:
- ${HOME}/.aspnet/https:/https/