Log*_*n K 2 c# docker .net-core
从我的 Dockerfile调用dotnet restore <project>会导致NU1301: Unable to load the service index for source错误。我已经解决了许多建议的类似问题,并且仍然存在问题。以下是我所能提供的有关我尝试过的尽可能多的信息:
RUN ping google.com成功(这样我就可以访问互联网)nuget.org击球效果非常好RUN curl <nuget_feed_url>成功--verbosity detailed不会提供任何其他错误消息,但会提供一条错误消息这是有问题的 Dockerfile 部分
FROM mcr.microsoft.com/dotnet/aspnet:6.0.13 AS base
# Create dockeruser in base layer
RUN addgroup --system --gid 1000 dockergroup \
&& adduser --system --uid 1000 --ingroup dockergroup --shell /bin/sh dockeruser
WORKDIR /app
EXPOSE 8080
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
# Arguments are required in each stage in order to get the correct value
WORKDIR /src
COPY ["src/Nucleus.LumberYard.API/", "Nucleus.LumberYard.API/"]
COPY ["./nuget.config", "./nuget.config"]
WORKDIR "/src/Nucleus.LumberYard.API"
#COPY [".editorconfig", "./"]
RUN dotnet restore "Nucleus.LumberYard.API.csproj"
RUN dotnet build "Nucleus.LumberYard.API.csproj" -c Release --no-restore
Run Code Online (Sandbox Code Playgroud)
环境信息
根据我的理解,您有以下情况:
dotnet restore之一的命令csprojdotnet restore失败,因为dotnetcli 无法与您的私有 nuget feed 通信我在做的项目中也遇到了同样的情况。我们有一个托管在 Azure Devops 中的私有 Nuget 源,我们在解决这个问题时也遇到了一些麻烦。
首先,我们先弄清楚问题的根本原因。您做了正确的事情,证明您能够通过curl您提到的命令从构建机器访问 nuget feed。实际上失败的是构建机器和私有 nuget feed 之间的身份验证。
您需要的第一件事是具有 nuget feed读取权限的个人访问令牌。您可以按照本指南创建您需要的个人访问令牌。
获得令牌后,您需要将其提供给dotnetcli。有多种方法可以做到这一点,我将解释对我们有用的一种方法。
我们没有将 nuget 源添加到文件中nuget.config,而是通过 cli 命令注册它。我非常确定有一种方法可以通过文件执行完全相同的操作nuget.config(有关更多详细信息,请参阅此处)。
这是我们在 docker 文件中使用的 cli 命令:
RUN dotnet nuget add source https://foo.bar.com/something/nuget/v3/index.json -u "whatever" -p "my-personal-access-token" --store-password-in-clear-text --valid-authentication-types "basic"
Run Code Online (Sandbox Code Playgroud)
请注意:
https://foo.bar.com/something/nuget/v3/index.json是指向您的私有 nuget feed 索引的绝对 URLwhatevermy-personal-access-token必须替换为您第一步创建的个人访问令牌您可以在此处找到该命令的完整参考dotnet nuget add source。
使用 cli注册此源后dotnet,您将能够dotnet restore正确运行命令。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
949 次 |
| 最近记录: |