Комментарии Леандро помогли найти решение.
Итак, сначала краткое изложение этой команды COPY, она принимает два параметра, источник и назначение.
В шаблоне для Dockerfile для Visual Studio он содержит расположение папки .csproj-файла, который он пытается скопировать. В моем случае команда читается следующим образом:
COPY ["Aeros.Services.Kubernetes/Aeros.Services.Kubernetes.csproj", "Aeros.Services.Kubernetes/"]
Итак, он ищет мой файл Aeros.Services.Kubernetes.csproj в папке проекта Aeros.Services.Kubernetes и копирует его в папку Aeros.Services.Kubernetes в папке src Docker.
Проблема в том, что если вы используете настройку по умолчанию, ваш dockerfile включается в папку проекта. Если вы выполняете сборку Docker из папки проекта, синтаксис команды COPY фактически находится в неверном месте файла. Например, если ваш проект - TestApp.csproj, расположенный в папке проекта TestApp, и вы выполняете команду сборки Docker для файла docker в той же папке, синтаксис этой команды COPY:
COPY ["TestApp/TestApp.csproj", "TestApp/"]
фактически ищет: TestApp / TestApp / TestApp.csproj.
Правильный синтаксис команды COPY в этой ситуации должен быть:
COPY ["TestApp.csproj", "TestApp/"]
, поскольку вы уже находитесь в папке проекта TestApp.
Другая проблема с шаблоном по умолчанию, который может беспокоить некоторых, заключается в том, что он также не копирует веб-файлы для проекта, поэтому, как только вы пройдете шаги восстановления COPY и dotnet, вы потерпите неудачу во время BUILD с:
CSC: ошибка CS5001: программа не содержит статический метод Main
подходит для точки входа
Это решается добавлением:
COPY . ./
после вашей команды восстановления RUN dotnet для копирования ваших файлов.
После того, как эти части были учтены в предоставленном шаблоне по умолчанию, все должно работать как положено.
Спасибо за помощь!