Похоже, что учебные пособия, которым вы следовали, все для .NET Core 2.0, но ваш проект использует .NET Core 2.1.
Как вы (вероятно) знаете, первая строка в Dockerfile
определяет, на каком изображении запускать ваше приложение.В твоем случае ты microsoft/aspnetcore
.Если вы посмотрите на страницу Docker Hub для образа microsoft / aspnetcore , вы увидите, что на нем написано:
Последние версии для 2.1 и новее теперь доступны в microsoft / dotnet,См. Эту ссылку для получения дополнительной информации о переходе на 2.1.
Нажав на эту ссылку, вы перейдете на страницу Docker Hub для изображения microsoft / dotnet ,который поддерживает .NET Core 2.1.
Итак, как указано в другом ответе, вам нужно изменить Dockerfile
, чтобы он ссылался на другой образ, на котором установлена среда выполнения .NET Core 2.1.Вы можете просто изменить первую строку на:
FROM microsoft/dotnet
, в которой может использоваться образ с установленным SDK .NET Core 2.1, но этот образ будет излишним, если вы планируете развернуть образ в рабочей среде.
В настоящее время принято использовать многоэтапные файлы Docker для выполнения этапов сборки, тестирования и публикации внутри контейнера.Вы можете прочитать об этом здесь .Это позволяет использовать другую базу изображений для создания и тестирования приложения, но использовать только конечный образ меньшего времени выполнения для окончательного рабочего образа.
Взгляните на некоторые из .NET Core Docker Samples , чтобы узнать, как это сделать.
Просто будьте внимательны, когда вы ищете учебники, в которых они используют более новый .NET Core 2.1 в качестве базового образа, или убедитесь, что вы создаете любые приложения с использованием того же .NET Core.версия в качестве учебного пособия.
Надеюсь, что поможет.