0

我在使用 docker 配置我的服务时遇到问题。我使用 VS 2022 通过模板“ASP.NET Core Web API”创建我的服务器。我在解决方案中添加了两个库,它们通过引用连接到主项目。然后我使用docker插件生成“dockerfile”,我得到了这样的东西。

#See https://aka.ms/containerfastmode to understand 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
WORKDIR /src
COPY ["AVM.Core.csproj", "."]
COPY ["../AVM.Domain/AVM.Domain.csproj", "../AVM.Domain/"]
COPY ["../AVM.Repository/AVM.Repository.csproj", "../AVM.Repository/"]
RUN dotnet restore "./AVM.Core.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "AVM.Core.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "AVM.Core.csproj" -c Release -o /app/publish

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

我使用示例 .dockerignore

**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md

当我尝试使用命令docker build -t avmcore构建我的图像时,出现这样的错误

=> [internal] load build definition from Dockerfile                                                               0.0s
 => => transferring dockerfile: 818B                                                                               0.0s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 34B                                                                                   0.0s
 => [internal] load metadata for mcr.microsoft.com/dotnet/sdk:6.0                                                  0.1s
 => [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:6.0                                               0.1s
 => [base 1/2] FROM mcr.microsoft.com/dotnet/aspnet:6.0@sha256:84fc4202a1f38fd440b718aeeb4e8cfe046e9f19ef977a28c0  0.0s
 => => resolve mcr.microsoft.com/dotnet/aspnet:6.0@sha256:84fc4202a1f38fd440b718aeeb4e8cfe046e9f19ef977a28c01827d  0.0s
 => [internal] load build context                                                                                  0.6s
 => => transferring context: 17.69MB                                                                               0.6s
 => [build 1/9] FROM mcr.microsoft.com/dotnet/sdk:6.0@sha256:76dbd63a33da6510787e97c0943c4c4a2136936ce360cf925386  0.0s
 => CACHED [base 2/2] WORKDIR /app                                                                                 0.0s
 => CACHED [final 1/2] WORKDIR /app                                                                                0.0s
 => CACHED [build 2/9] WORKDIR /src                                                                                0.0s
 => CACHED [build 3/9] COPY [AVM.Core.csproj, .]                                                                   0.0s
 => ERROR [build 4/9] COPY [../AVM.Domain/AVM.Domain.csproj, ../AVM.Domain/]                                       0.0s
 => ERROR [build 5/9] COPY [../AVM.Repository/AVM.Repository.csproj, ../AVM.Repository/]                           0.0s
------
 > [build 4/9] COPY [../AVM.Domain/AVM.Domain.csproj, ../AVM.Domain/]:
------
------
 > [build 5/9] COPY [../AVM.Repository/AVM.Repository.csproj, ../AVM.Repository/]:
------
failed to compute cache key: "/AVM.Domain/AVM.Domain.csproj" not found: not found

谢谢大家的回答。

4

1 回答 1

0

我遇到过同样的问题。

Visual Studio 对 Docker 映像使用了一些不同的方法。
尝试移动到 .sln 所在的父文件夹并运行docker build并使用-f选项指定 Dockerfile 。

docker build -f ./ProjectFolder/Dockerfile ...
于 2022-02-09T14:23:53.087 回答