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

使用Skaffold构建.NET Core Docker镜像时NuGet报NU1301错误

解决Skaffold构建.NET Core Docker镜像时的NU1301 NuGet错误

问题重现

构建阶段执行dotnet restore时反复报错:

[build 5/8] RUN dotnet restore "XXXX.Students.API/XXXX.Students.API.csproj":
0.978 Determining projects to restore...
14.80 /src/XXXX.Students.Domain/XXXX.Students.Domain.csproj : error NU1301: Unable to load the service index for source https://api.nuget.org/v3/index.json. [/src/XXXX.Students.API/XXXX.Students.API.csproj]
...

解决方案

1. 排查容器网络连通性

先确认Docker容器内能否访问NuGet源:
在Dockerfile的build阶段、dotnet restore前添加网络测试命令:

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
# 添加网络测试
RUN curl -I https://api.nuget.org/v3/index.json
# 后续原有命令
COPY ["XXXX.Students.API/XXXX.Students.API.csproj", "XXXX.Students.API/"]
COPY ["XXXX.Students.Domain/XXXX.Students.Domain.csproj", "XXXX.Students.Domain/"]
RUN dotnet restore "XXXX.Students.API/XXXX.Students.API.csproj"

如果测试失败,说明容器网络存在问题:

  • 公司网络下需配置代理,在Dockerfile中添加环境变量:
    ENV HTTP_PROXY=http://你的代理地址:端口
    ENV HTTPS_PROXY=http://你的代理地址:端口
    
  • 检查本地Docker的网络设置,比如是否开启了VPN或防火墙拦截。

2. 切换至国内NuGet镜像源

国内访问nuget.org不稳定,可替换为阿里云、清华等国内镜像:

方式一:临时指定源执行restore

修改Dockerfile中的restore命令:

RUN dotnet restore "XXXX.Students.API/XXXX.Students.API.csproj" --source https://mirrors.aliyun.com/nuget/v3/index.json

方式二:添加国内源到NuGet配置

在Dockerfile中添加源:

RUN dotnet nuget add source https://mirrors.aliyun.com/nuget/v3/index.json -n Aliyun
RUN dotnet restore "XXXX.Students.API/XXXX.Students.API.csproj"

3. 引入本地NuGet配置文件

如果本地有配置好的NuGet.config(比如已添加国内源或代理),将其复制到容器中:
修改Dockerfile,在restore前复制配置文件:

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
# 复制本地NuGet.config到容器
COPY ["NuGet.config", "."]
COPY ["XXXX.Students.API/XXXX.Students.API.csproj", "XXXX.Students.API/"]
COPY ["XXXX.Students.Domain/XXXX.Students.Domain.csproj", "XXXX.Students.Domain/"]
RUN dotnet restore "XXXX.Students.API/XXXX.Students.API.csproj"

4. 调整Skaffold构建配置

当前使用custom build脚本,可尝试切换为Skaffold原生Docker构建,减少脚本带来的变量:
修改skaffold.yaml的build部分:

build:
  artifacts:
    - image: students-api
      docker:
        dockerfile: ./XXXX.Students.API/Dockerfile
      dependencies:
        paths:
          - XXXX.Students.API/**
          - XXXX.Students.Domain/**

如果需要传递代理参数,可在Skaffold中添加构建参数:

build:
  artifacts:
    - image: students-api
      docker:
        dockerfile: ./XXXX.Students.API/Dockerfile
        buildArgs:
          HTTP_PROXY: http://你的代理地址:端口
          HTTPS_PROXY: http://你的代理地址:端口

5. 验证基础镜像完整性

基础镜像损坏也可能导致网络异常,手动拉取SDK镜像:

docker pull mcr.microsoft.com/dotnet/sdk:7.0

拉取完成后再执行Skaffold构建命令:

skaffold dev --default-repo=localhost:5000 -f skaffold.yaml --cache-artifacts=false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:54:51