具有dotnet还原功能的Docker导致错误:GSSAPI操作失败-请求了不受支持的机制

问题描述 投票:1回答:1

具有ASP.NET Core 2.2 Web应用程序,我尝试在一个完整的代理后面还原NuGet包

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS sdk-image
WORKDIR /app/
ARG HTTP_PROXY
ENV HTTP_PROXY ${HTTP_PROXY}
ENV HTTPS_PROXY ${HTTP_PROXY}
COPY MyProject.csproj .

RUN dotnet restore

带有以下docker-compose.yml

version: '2'
services:
  tool:
    build:
      context: .
      args:
        http_proxy: ${HTTP_PROXY}
networks:
  default:
    ipam:
      driver: default
      config:
        - subnet: 192.168.239.0/21

网络被覆盖,因为Dockers默认网络与公司内部范围冲突。在主机上将HTTP_PROXY设置为完整网址,例如http://user:[email protected]:81

[运行docker-compose up --build时,恢复失败:

Step 7/15 : RUN dotnet restore
 ---> Running in 62c8bb6f2f72
/usr/share/dotnet/sdk/2.2.402/NuGet.targets(123,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/app/MyProject.csproj]
/usr/share/dotnet/sdk/2.2.402/NuGet.targets(123,5): error :   GSSAPI operation failed with error - An unsupported mechanism was requested (Unknown error). [/app/MyProject.csproj]
ERROR: Service 'tool' failed to build: The command '/bin/sh -c dotnet restore' returned a non-zero code: 1

我找不到有关此问题的太多信息。 A Github issue是通过他们的本地TFS获得的。但是我没有任何自托管的存储库,只有我和NuGets服务器之间的公司代理。

c# docker asp.net-core nuget asp.net-core-2.2
1个回答
0
投票

似乎是由于代理需要NTLM而缺少相应的库引起的。我在公司代理后面遇到了这个问题,并通过在Docker中安装这样的gss-ntlmssp软件包来解决了这个问题:

RUN apt-get install -y gss-ntlmssp

安装这些软件包后,对用于获取NuGet软件包的代理进行身份验证很有效。

© www.soinside.com 2019 - 2024. All rights reserved.