docker 的内置支持已生成 docker 个有错误的文件
Built-in support of docker has generated dockerfile with errors
我的 VS 2019 使用以下代码生成了 Dockerfile:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["src/Services/ProductCatalogApi/ProductCatalogApi.csproj", "src/Services/ProductCatalogApi/"]
RUN dotnet restore "src/Services/ProductCatalogApi/ProductCatalogApi.csproj"
COPY . .
WORKDIR "/src/Services/ProductCatalogApi"
RUN dotnet build "ProductCatalogApi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ProductCatalogApi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ProductCatalogApi.dll"]
当我 运行 我的 Dockerfile 使用命令
docker build .
我收到了下一个:
Sending build context to Docker daemon 77.49MB
Step 1/16 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
---> 014a41b1f39a
Step 2/16 : WORKDIR /app
---> Using cache
---> c3eb79db5e63
Step 3/16 : EXPOSE 80
---> Using cache
---> f23ddd06f8f8
Step 4/16 : FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
---> 006ded9ddf29
Step 5/16 : WORKDIR /src
---> Using cache
---> d8016eaadf87
Step 6/16 : COPY ["src/Services/ProductCatalogApi/ProductCatalogApi.csproj", "src/Services/ProductCatalogApi/"]
COPY failed: stat /var/lib/docker/tmp/docker-builder040062339/src/Services/ProductCatalogApi/ProductCatalogApi.csproj: no such file or directory
我的 .csproj 文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>ShoesOnContainers.Services.ProductCatalogApi</RootNamespace>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerfileContext>..\..\..</DockerfileContext>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.5" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.3" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
</ItemGroup>
</Project>
我一整天都在尝试通过其他方式构建我的形象,每次我收到错误。请帮助某人.......
src/Services/ProductCatalogApi/ProductCatalogApi.csproj
不存在于您运行从中安装它的文件夹中。
如果docker文件与csproj在同一个文件夹中,那么它应该是
COPY ["ProductCatalogApi.csproj", "src/Services/ProductCatalogApi/"]
这有点棘手,如果您使用 docker-compose,路径必须是您尝试 docker-compose 文件的相对路径 运行
我的 VS 2019 使用以下代码生成了 Dockerfile:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["src/Services/ProductCatalogApi/ProductCatalogApi.csproj", "src/Services/ProductCatalogApi/"]
RUN dotnet restore "src/Services/ProductCatalogApi/ProductCatalogApi.csproj"
COPY . .
WORKDIR "/src/Services/ProductCatalogApi"
RUN dotnet build "ProductCatalogApi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ProductCatalogApi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ProductCatalogApi.dll"]
当我 运行 我的 Dockerfile 使用命令
docker build .
我收到了下一个:
Sending build context to Docker daemon 77.49MB
Step 1/16 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
---> 014a41b1f39a
Step 2/16 : WORKDIR /app
---> Using cache
---> c3eb79db5e63
Step 3/16 : EXPOSE 80
---> Using cache
---> f23ddd06f8f8
Step 4/16 : FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
---> 006ded9ddf29
Step 5/16 : WORKDIR /src
---> Using cache
---> d8016eaadf87
Step 6/16 : COPY ["src/Services/ProductCatalogApi/ProductCatalogApi.csproj", "src/Services/ProductCatalogApi/"]
COPY failed: stat /var/lib/docker/tmp/docker-builder040062339/src/Services/ProductCatalogApi/ProductCatalogApi.csproj: no such file or directory
我的 .csproj 文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>ShoesOnContainers.Services.ProductCatalogApi</RootNamespace>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerfileContext>..\..\..</DockerfileContext>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.5" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.3" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
</ItemGroup>
</Project>
我一整天都在尝试通过其他方式构建我的形象,每次我收到错误。请帮助某人.......
src/Services/ProductCatalogApi/ProductCatalogApi.csproj
不存在于您运行从中安装它的文件夹中。
如果docker文件与csproj在同一个文件夹中,那么它应该是
COPY ["ProductCatalogApi.csproj", "src/Services/ProductCatalogApi/"]
这有点棘手,如果您使用 docker-compose,路径必须是您尝试 docker-compose 文件的相对路径 运行