You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过代理在Docker容器中还原NuGet包失败如何解决?

解决方案

问题根因

  • 你在构建命令中传入的HTTP_PROXY、HTTPS_PROXY构建参数没有在Dockerfile中声明接收,dotnet restore执行时无法读取到代理配置
  • 微软官方的Linux版dotnet SDK镜像默认缺少GSSAPI Kerberos依赖包,代理协商认证时会触发SPNEGO相关报错

修复步骤

1. 修改Dockerfile,新增参数声明和依赖安装

# 全局声明接收代理构建参数
ARG HTTP_PROXY
ARG HTTPS_PROXY
# 导出为全局环境变量,所有构建阶段可访问
ENV http_proxy=$HTTP_PROXY
ENV https_proxy=$HTTPS_PROXY
ENV NO_PROXY=localhost,127.0.0.1,mcr.microsoft.com

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app

# 安装GSSAPI依赖解决SPNEGO认证报错
RUN apt-get update && apt-get install -y --no-install-recommends \
    libgssapi-krb5-2 \
    && rm -rf /var/lib/apt/lists/*

# 复制csproj文件并还原
COPY *.csproj ./
RUN dotnet restore

2. 保持原有构建命令不变,重新执行即可

docker build --build-arg HTTP_PROXY=http://172.1.0.15:8080 --build-arg HTTPS_PROXY=http://172.1.0.15:8080 --no-cache -t test -f Dockerfile .

可选优化(如果代理无需认证)

如果你的代理不需要身份认证,可以不用安装额外依赖,直接在restore命令中禁用默认凭证协商即可:

RUN dotnet restore /p:UseDefaultCredentials=False

或者新增环境变量跳过NuGet认证请求:

ENV DISABLE_NUGET_AUTH_REQUEST=1

内容的提问来源于stack exchange,提问作者CrazyTea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:36:04