Docker构建.NET6项目报错NU1301 本地NuGet源不存在如何修复
问题根因
报错来自两个核心问题:
- 你用的
mcr.microsoft.com/dotnet/sdk:6.0默认是Linux镜像,Linux根本不识别Windows的C:\盘符、\\开头的SMB共享路径格式。dotnet restore读到这类不符合Linux路径规则的地址时,会默认把它当成相对路径,直接拼在当前工作目录/src后面,自然就生成了/src/C:\Users\...这种不存在的错误路径。 - 容器本身是隔离环境,默认既不会挂载你宿主机的C盘目录,也不会直接继承宿主机的局域网共享访问权限,就算你把路径格式改成Linux能识别的,容器里也访问不到你Windows本机的文件夹和内网SMB共享。
修复方案
按实际场景选以下方案即可:
方案1:构建时显式指定可用源(最推荐,不影响本地开发配置)
直接修改Dockerfile里的restore命令,显式指定容器内能访问的包源,跳过本地NuGet.Config里的Windows专属源即可。把原Dockerfile里的:
RUN dotnet restore "TeamService/TeamService.csproj"
替换为:
RUN dotnet restore "TeamService/TeamService.csproj" -s https://api.nuget.org/v3/index.json
如果有容器网络能访问到的内部NuGet服务,直接追加多个-s 源地址参数就行。
这个方案完全不影响你本地Windows开发时用本地文件夹、SMB共享作为包源,只有Docker构建过程会走指定的公网/内部HTTP源。
方案2:单独给Docker构建准备NuGet配置
如果需要长期维护Docker构建配置,可以在解决方案目录新建一个NuGet.Docker.config文件,里面只保留容器内可访问的包源:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> <!-- 仅添加容器网络可达的HTTP/HTTPS协议NuGet源,不要加Windows本地路径、SMB路径 --> </packageSources> </configuration>
然后修改Dockerfile里复制配置、执行restore的步骤:
COPY ["TeamService/TeamService.csproj", "TeamService/"] # 用Docker专用的NuGet配置替换原配置 COPY ./NuGet.Docker.Config ./NuGet.Config RUN dotnet restore "TeamService/TeamService.csproj" --configfile ./NuGet.Config
方案3:临时测试需要用到本地nupkg包(仅临时用,不推荐生产配置)
如果构建时必须用到你本地文件夹里的nupkg包,需要先把包放到Docker构建上下文目录内,复制进镜像后用相对路径引用:
- 把
C:\Users\dominik.essenhofer\Documents\Local Nuget Packages下的所有包复制到解决方案目录下新建的local-nuget文件夹 - 修改Dockerfile的restore相关步骤:
COPY ["TeamService/TeamService.csproj", "TeamService/"] # 复制本地包目录到镜像内 COPY ./local-nuget ./local-nuget RUN dotnet restore "TeamService/TeamService.csproj" -s ./local-nuget -s https://api.nuget.org/v3/index.json
注意:\\vierepo01\ucPackageStore\net-core这类Windows SMB共享路径无法直接在Linux容器内访问,要么把共享里的包提前复制到构建上下文,要么把SMB共享配置成可HTTP访问的NuGet源,否则容器内无法拉取上面的包。
额外建议
不要把你本机专属的绝对路径包源写在解决方案级的NuGet.Config里提交到仓库,这类本地路径应该配置在你本机的用户级NuGet配置中,否则其他开发人员、CI/CD流水线、Docker构建都会因为路径不存在触发同类报错。
内容的提问来源于stack exchange,提问作者CoffeeOrc
相关产品推荐
相关产品推荐

