.net - 使用 Visual Studio 2017 构建 Docker 失败,因为在使用私有 nuget 源的 dotnet 还原期间超时
问题描述
我有一个 ASP.NET Core api,我想使用 VisualStudio 2017 为其构建一个 Docker 映像。我使用了 Add Docker Support -> Linux 并生成了 Dockerfile,并且因为我想使用 NuGet.Config 文件,所以我对其进行了修改因此(复制 NuGet.Config 。)我在 dotnet 还原期间使用 NuGet.Config 文件,如下所示:
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY NuGet.Config ./
COPY ["Stock.Api/Stock.Api.csproj", "Stock.Api/"]
COPY ["Business/Stock/Stock.csproj", "Business/Stock/"]
COPY ["Business/Stock.Dto/Stock.Dto.csproj", "Business/Stock.Dto/"]
RUN dotnet restore --configfile NuGet.Config "Stock.Api/Stock.Api.csproj"
COPY . .
WORKDIR "/src/Stock.Api"
RUN dotnet build "Stock.Api.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "Stock.Api.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Stock.Api.dll"]
这是我使用的 NuGet.Config 文件,它有两个 NuGet 提要,一个公共https://api.nuget.org/v3/index.json和一个本地私有提要http://192.168.40.100:3000/nuget( 192.168.40.100 是我的本地@IP)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="MYPRIVATEFEED" value="http://192.168.40.100:3000/nuget" />
</packageSources>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<bindingRedirects>
<add key="skip" value="False" />
</bindingRedirects>
<packageManagement>
<add key="format" value="0" />
<add key="disabled" value="False" />
</packageManagement>
</configuration>
使用 VS2017,我尝试构建 Docker 映像,它在 dotnet restore 期间的第 10 步超时失败,如您所见:
Step 10/19 : RUN dotnet restore --configfile NuGet.Config "Stock.Api/Stock.Api.csproj"
3> ---> Running in 5c8827a8d62d
3> Restoring packages for /src/Business/Stock/Stock.csproj...
3> Retrying 'FindPackagesByIdAsyncCore' for source 'http://192.168.40.100:3000/nuget/FindPackagesById()?id='Dto.Base'&semVerLevel=2.0.0'.
3> The HTTP request to 'GET http://192.168.40.100:3000/nuget/FindPackagesById()?id='Dto.Base'&semVerLevel=2.0.0' has timed out after 100000ms.
我不知道为什么会出现超时,因为本地提要在我的本地计算机中。我使用 Docker for Desktop 将 DNS 修改为自动到静态,我尝试了很多我在互联网上找到的东西,但没有任何成功。
有人有线索吗?
非常感谢
解决方案
对于那些对问题感兴趣并遇到同样问题的人,我终于卸载了Docker,重新安装了它,重新设置了所有东西,它仍然像以前一样工作......需要看看和学习Docker网络是如何工作的......</p>
推荐阅读
- jquery - 更改数据表 css 以对自定义 css 进行排序
- json - Angular:带有订阅的 Observable 返回错误 200 OK,因为响应不是 JSON
- python - Mancala AI 完成游戏并在一轮中获胜而不是一回合
- css - CSS:如何在不影响周围文本流的情况下动态调整 img 元素的大小
- reactjs - setState 未在 React 函数组件中应用更改
- python - Cython 不构建 .so 文件
- visual-studio-code - 关注VS Vode中不同的git仓库
- hyperledger-fabric - 使用fabric-sdk-go连接网关失败
- java - 为什么 Android Studio 模拟器中的所有东西都在一个堆中?
- javascript - 如何自动获取要在参数中设置的值