Это выглядит правильно для меня.
Полезным вариантом отладки является добавление RUN ls -al
к шагу времени выполнения, чтобы убедиться, что вы нацеливаетесь на правильную запись app-name.dll
.
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY --from=build-env /app/out .
RUN ls -al
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Затем ищите вывод во время сборки. Или вы можете s sh в контейнер running , чтобы проверить это.
$ docker exec -it container-id bash
.
Кроме того, вы всегда можете попробовать переключиться на другой порт в Properties > launchSettings.json
, а затем обновить точку входа Dockerfile
с этим портом и --urls
-args, например:
ENTRYPOINT ["dotnet", "aspnetapp.dll", "--urls", "http://*:6001"]
Затем вам также необходимо сопоставить этот порт на хост-компьютере -p 8080:6001
. Также убедитесь, что ваш контейнер также прослушивает этот интерфейс (0.0.0.0).
Обновление
Теперь, когда вы указали параметры запуска:
"ApiForDocker": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/values",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
Вы можете обновить точку входа docker на:
ENTRYPOINT ["dotnet", "aspnetapp.dll", "--urls", "http://*:5000"]
и сопоставить контейнер на хост-компьютере с помощью -p 5000:5000
, а затем localhost:5000/api/values
даст вам API ПОЛУЧИТЕ ответ на этот маршрут в вашем браузере.