Проблема сборки образа Docker в Azure DevOps

Я создал основной веб-API ASP.NET и пытаюсь создать образ докера с помощью Azure DevOps, но при команде копирования возникают ошибки.

Ошибка (1):

ОШИБКА № 8: не удалось вычислить контрольную сумму ссылки e47e7669-35e6-4532-94ca-a2b577895d60::t0eq4p4a1jx7z8dkx4wqsmjq2: «/Weather.Library/Weather.Library.csproj»: не найдено

Ошибка (2):

ОШИБКА #9: не удалось вычислить контрольную сумму ссылки e47e7669-35e6-4532-94ca-a2b577895d60::t0eq4p4a1jx7z8dkx4wqsmjq2: «/Weather.API/Weather.API.csproj»: не найдено

Докер-файл:

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["Weather.API/Weather.API.csproj", "Weather.API/"]
COPY ["Weather.Library/Weather.Library.csproj", "Weather.Library/"]
RUN dotnet restore "./Weather.API/Weather.API.csproj"
COPY . .
WORKDIR "/src/Weather.API"
RUN dotnet build "./Weather.API.csproj" -c $BUILD_CONFIGURATION -o /app/build

FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./Weather.API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Weather.API.dll"]
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я проверил файлы вашего проекта и сообщение об ошибке.

Причина проблемы заключается в том, что при использовании задачи Docker в Azure DevOps Pipeline для рабочего каталога по умолчанию будет установлен тот же путь, что и для файла docker.

Чтобы решить проблемы в конвейере, вам необходимо переместить Dockerfile в корневой путь проекта.

Например:

- Folder Weather.API
- Folder Weather.Library
- dockerfile
- WeatherAPISolution.sln

Тогда файлы csproj можно будет успешно найти.

В качестве другого метода вы также можете изменить использование задачи script/bash для запуска команды docker и установки рабочего каталога.

Например:

steps:
- script: 'docker build -f  Weather.API/Dockerfile  -t imagename .'
  workingDirectory: $(build.sourcesdirectory)

В этом случае в качестве рабочего каталога будет установлен корневой путь.

На следующем этапе сборки Docker вы можете столкнуться со следующей ошибкой в ​​строке сборки dotnet:

CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point

Чтобы решить эту проблему, вам необходимо скопировать файл проекта по пути: /src/Weather.API

COPY . /src/Weather.API

образец докер-файла:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["Weather.API/Weather.API.csproj", "Weather.API/"]
COPY ["Weather.Library/Weather.Library.csproj", "Weather.Library/"]
RUN dotnet restore "./Weather.API/Weather.API.csproj"
COPY . /src/Weather.API
WORKDIR "/src/Weather.API"
RUN dotnet build "./Weather.API.csproj" -c $BUILD_CONFIGURATION -o /app/build

FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./Weather.API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Weather.API.dll"]

Я переместил Dockerfile в корневой путь проекта, и это сработало. Спасибо

Ramadoss E 12.07.2024 09:18

@RamadossE Рад знать, что это может вам помочь.

Kevin Lu-MSFT 12.07.2024 09:18

Другие вопросы по теме

Похожие вопросы