【问题标题】:Docker Desktop for Windows + ASP.NET Core ErrorDocker Desktop for Windows + ASP.NET Core 错误
【发布时间】:2019-07-22 18:55:08
【问题描述】:

我最近决定试一试 docker,我已经遇到这个错误 2 天了。无论我做什么,我似乎都无法摆脱它。

对于 .NET Core 2.2 应用程序:

2>C:\Users\Russell\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.4.4\build\Container.targets(256,5): error : An item with the same key has already been added.

这是该项目新添加的 Docker 支持,没有配置更改。我已经尝试过清理、重建、更新所有 nuget 等。如果我在 IIS express 中运行项目,它运行良好。

有人有什么想法吗?

编辑 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"]```

【问题讨论】:

  • 发布您的 dockerfile 或步骤如何解决此错误
  • 文件添加 - 我所做的只是右键单击项目 -> 添加 -> docker support > linux(windows 做同样的事情),然后尝试通过“运行”在 docker 中运行项目工具栏中VS顶部的按钮。
  • 这变成了 Visual Studio 故障排除而不是 docker。我真的建议不要将 VS 用于与 docker 相关的任何事情。手动制作您的 dockerfile 以了解这些内容的作用
  • 您是否找到了解决此问题的方法,因为我遇到了同样的问题。
  • 很遗憾,没有。不过,我下周要回去,但会联系 docker。

标签: visual-studio docker asp.net-core docker-for-windows docker-desktop


【解决方案1】:

您可能有一个导致问题的剩余容器。尝试使用以下命令清理您的环境:

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 替换为图像的名称,或者事先使用该值创建一个变量。

【讨论】:

  • "最后一个可能不是必需的,但它无济于事。" — 我假设您的意思是“不会受伤”?
  • 是的,很抱歉。
  • 没问题 - 只是想确保我的编辑是 cromulent。
猜你喜欢
  • 2019-05-11
  • 2021-11-20
  • 2017-09-29
  • 2021-07-14
  • 2018-03-28
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多