Obtención de un error en la canalización de Azure DevOps:
Step 7/17 : COPY ["demo6/demo6.csproj", "demo6/"] COPY failed: file not found in build context or excluded by .dockerignore: stat demo6/demo6.csproj: file does not existNOTAS: ejecute la canalización en modo de diagnóstico y el archivo .sln existe
##[debug]cwd=/home/vsts/work/1/s ##[debug] /home/vsts/work/1/s/demo6.sln (file) ##[debug] /home/vsts/work/1/s/demo6/demo6.csproj (file)Tengo una solución Asp.Net Core multiproyecto con la estructura de carpetas y los proyectos de la siguiente manera:
demo6 |--demo6/demo6.csproj |--demo6.api/demo6.api.csprojLa aplicación es demo6, que hace referencia a demo6.api, que es una biblioteca de clases.
Esto está en GitHub en un repositorio demo6. Modifiqué el Dockerfile generado automáticamente para agregar el demo6/ adicional para ver si eso funciona, pero no.
Agradezco cualquier ayuda.
Dockerfile a continuación:
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build WORKDIR /src COPY ["demo6/demo6.csproj", "demo6/"] RUN dotnet restore "demo6/demo6.csproj" COPY . . WORKDIR "/src/demo6" RUN dotnet build "demo6.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "demo6.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "demo6.dll"]También probé esto:
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build WORKDIR /src COPY ["demo6/demo6/demo6.csproj", "ddemo6/"] RUN dotnet restore "ddemo6/demo6.csproj" COPY . . WORKDIR "/src/ddemo6" RUN dotnet build "demo6.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "demo6.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "demo6.dll"]Tengo este error:
Step 7/17 : COPY ["demo6/demo6/demo6.csproj", "ddemo6/"] COPY failed: file not found in build context or excluded by .dockerignore: stat demo6/demo6/demo6.csproj: file does not exist ##[error]COPY failed: file not found in build context or excluded by .dockerignore: stat demo6/demo6/demo6.csproj: file does not existEl motivo del error de archivo no encontrado puede ser que la ruta relativa del Dockerfile y el csproj sean diferentes. Intente configurar el Dockerfile en la raíz de la solución para resolver su error.
También debe agregar un buildContext con la carpeta csproj .
buildContext : ruta al contexto de compilación
Además, aquí hay un caso al que puede referirse.
Una posible causa más de COPY falló: no se especificaron archivos de origen es el archivo .dockerignore presente en su espacio de trabajo
Busque el archivo .dockerignore porque la CLI (interfaz de línea de comandos) de docker envía contexto al daemon de docker para cargar el archivo .dockerignore.
Si el archivo .dockerignore existe en el contexto, es posible que haya una entrada de exclusión para ignorar el directorio de compilación
# ignore or exclude build directory */build* */*/build*