Docker Windows 的桌面 + ASP.NET 核心错误
Docker Desktop for Windows + ASP.NET Core Error
我最近决定 docker 试一试,现在 运行 我已经陷入这个错误 2 天了。无论我做什么,我似乎都无法摆脱它。
对于 .NET Core 2.2 应用程序:
2>C:\Users\Russell\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets.4.4\build\Container.targets(256,5): error : An item with the same key has already been added.
这是新添加的 Docker 项目支持,没有配置更改。我已经尝试过清理、重建、更新所有 nugets 等。如果我 运行 IIS 中的项目表达它 运行 没问题。
大家有什么想法吗?
编辑 1:Docker 文件:
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["SearchAPICore_Search/SearchAPICore_Search.csproj", "SearchAPICore_Search/"]
COPY ["SearchAPICore_Models/SearchAPICore_Models.csproj", "SearchAPICore_Models/"]
RUN dotnet restore "SearchAPICore_Search/SearchAPICore_Search.csproj"
COPY . .
WORKDIR "/src/SearchAPICore_Search"
RUN dotnet build "SearchAPICore_Search.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "SearchAPICore_Search.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "SearchAPICore_Search.dll"]```
您可能有一个剩余的容器导致了这个问题。尝试使用以下命令清理您的环境:
Linux:
# Clean exited containers
docker ps --filter status=exited -q | xargs docker rm
# Clean dangling images
docker images --filter dangling=true -q | xargs docker rmi
# Clean old tagged images
docker images --filter reference="$ContainerTag" -q | xargs docker rmi
Windows PowerShell:
# Clean exited containers
docker ps --filter status=exited -q | %{ docker rm }
# Clean dangling images
docker ps --filter dangling=true -q | %{ docker rmi }
# Clean old tagged images
docker images --filter reference="$ContainerTag" -q | %{ docker rmi }
最后一个可能没有必要,但也无妨。只需确保将 $ContainerTag 替换为图像的名称,或者事先创建一个具有该值的变量。
我最近决定 docker 试一试,现在 运行 我已经陷入这个错误 2 天了。无论我做什么,我似乎都无法摆脱它。
对于 .NET Core 2.2 应用程序:
2>C:\Users\Russell\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets.4.4\build\Container.targets(256,5): error : An item with the same key has already been added.
这是新添加的 Docker 项目支持,没有配置更改。我已经尝试过清理、重建、更新所有 nugets 等。如果我 运行 IIS 中的项目表达它 运行 没问题。
大家有什么想法吗?
编辑 1:Docker 文件:
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["SearchAPICore_Search/SearchAPICore_Search.csproj", "SearchAPICore_Search/"]
COPY ["SearchAPICore_Models/SearchAPICore_Models.csproj", "SearchAPICore_Models/"]
RUN dotnet restore "SearchAPICore_Search/SearchAPICore_Search.csproj"
COPY . .
WORKDIR "/src/SearchAPICore_Search"
RUN dotnet build "SearchAPICore_Search.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "SearchAPICore_Search.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "SearchAPICore_Search.dll"]```
您可能有一个剩余的容器导致了这个问题。尝试使用以下命令清理您的环境:
Linux:
# Clean exited containers
docker ps --filter status=exited -q | xargs docker rm
# Clean dangling images
docker images --filter dangling=true -q | xargs docker rmi
# Clean old tagged images
docker images --filter reference="$ContainerTag" -q | xargs docker rmi
Windows PowerShell:
# Clean exited containers
docker ps --filter status=exited -q | %{ docker rm }
# Clean dangling images
docker ps --filter dangling=true -q | %{ docker rmi }
# Clean old tagged images
docker images --filter reference="$ContainerTag" -q | %{ docker rmi }
最后一个可能没有必要,但也无妨。只需确保将 $ContainerTag 替换为图像的名称,或者事先创建一个具有该值的变量。