当前位置: 首页 > 知识库问答 >
问题:

docker容器中的dotnet还原过程中出错

倪振海
2023-03-14

我正在尝试运行一个。NET Core dockerfile,但在dotnet恢复中不断出现错误。我在 Linux 容器中运行它。我尝试在Windows容器中运行它,但在COPY命令期间出现错误。

我有一个docker compose文件,它从子文件夹中加载一个. NET Core dockerfile文件。我在Powershell中运行“docker-compose up”。构建过程到达dotnet还原步骤,并引发以下错误:

/usr/share/dotnet/sdk/3.1.100/NuGet.targets(123,5): error : Unable to load the service index for source http://192.168.30.2:8080/tfs/DefaultCollection/_packaging/api-library/nuget/v3/index.json. [/Portal.API/Portal.Api.csproj]
/usr/share/dotnet/sdk/3.1.100/NuGet.targets(123,5): error :   GSSAPI operation failed with error - Unspecified GSS failure.  Minor code may provide more information (SPNEGO cannot find mechanisms to negotiate). [/Portal.API/Portal.Api.csproj]

我试着根据这篇Stackoverflow帖子更新Visual Studio中的devenv.exe.config文件:https://stackoverflow.com/a/47837720/2026659

更新devenv.exe.config后,我得到了一个略有不同的错误(还包括整个生成输出):

    Step 1/9 : FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS api-env
 ---> cef7866e800b
Step 2/9 : WORKDIR /Portal.API
 ---> Using cache
 ---> 80eea76dc2a0
Step 3/9 : COPY ./Portal.API/Portal.Api.csproj .
 ---> Using cache
 ---> 0739924c5ebf
Step 4/9 : COPY ./Portal.API/NuGet.config .
 ---> f1a514456db0
Step 5/9 : RUN dotnet restore
 ---> Running in 9d4a8f5d6239
  Restore completed in 8.15 sec for /Portal.API/Portal.Api.csproj.
/usr/share/dotnet/sdk/3.1.100/NuGet.targets(123,5): error : Unable to load the service index for source http://192.168.30.2:8080/tfs/DefaultCollection/_packaging/api-library/nuget/v3/index.json. [/Portal.API/Portal.Api.csproj]
/usr/share/dotnet/sdk/3.1.100/NuGet.targets(123,5): error :   Connection refused [/Portal.API/Portal.Api.csproj]
ERROR: Service 'portal.api' failed to build: The command '/bin/sh -c dotnet restore' returned a non-zero code: 1

更新:我的一些NuGet包托管在本地网络上的私人服务器上,我通过虚拟专用网访问。我使用视窗活动目录登录我的工作笔记本电脑,我想这些凭据是用来访问私人服务器的。

更新 2:我向我的 NuGet.config html" target="_blank">添加了登录凭据,如下所示:

...
<packageSourceCredentials>
    <api-library>
        <add key="Username" value="username" />
        <add key="ClearTextPassword" value="password" />
      </api-library>
  </packageSourceCredentials>
</configuration>

现在,在docker容器中运行dotnet还原时,我收到不同的错误:

/usr/share/dotnet/sdk/3.1.100/NuGet.targets(123,5): error : Unable to load the service index for source http://192.168.30.2:8080/tfs/DefaultCollection/_packaging/api-library/nuget/v3/index.json. [/Portal.API/Portal.Api.csproj]
/usr/share/dotnet/sdk/3.1.100/NuGet.targets(123,5): error :   GSSAPI operation failed with error - An invalid name was supplied (Configuration file does not specify default realm).

在做了更多的谷歌搜索之后,我认为我需要以不同的方式传递登录凭据,可能使用个人访问令牌,如GitHub帖子中所示:https://github.com/microsoft/artifacts-credprovider/issues/63

我不知道如何着手这件事。

共有3个答案

屠华辉
2023-03-14

我能够通过使用Windows容器解决这个问题。

邢臻
2023-03-14

@ greektreat谢谢大家!这解决了我纠结了几天的一个问题。在docker构建期间,我的私有feed超时。添加基本身份验证解决了我的问题。

参考我的更新docker文件声明;运行dot net nu get add source " $ feed "-n private feed-u docker-p " $ pat "-store-password-in-clear-text-valid-authentic ation-types " basic "-config file nu get . config

浦泳
2023-03-14

对此有很多问题。刚刚发现,dotnet restore正在尝试使用NTML,您需要强制它使用PAT的基本身份验证才能在linux上工作。基于这篇文章https://developercommunity.visualstudio.com/t/azure-artifacts-nuget-feed-gives-error-during-rest/711941

在您需要添加

  <add key="ValidAuthenticationTypes" value="basic" />

例如:

<packageSourceCredentials>
    <api-library>
        <add key="Username" value="username" />
        <add key="ClearTextPassword" value="password" />
        <add key="ValidAuthenticationTypes" value="basic" />
      </api-library>
  </packageSourceCredentials>
</configuration>
 类似资料:
  • 我的服务器上有一个运行neo4j的docker容器,并且设置了自动备份来备份数据库。我试图测试从备份中还原数据库,但我不知道如何在docker容器中还原数据库。 我正在尝试使用 我从neo4j文档中读到,您必须关闭neo4j才能恢复备份,但我非常肯定在容器中关闭neo4j将关闭我的容器(容器是使用启动的)。是否有一种方法可以在不关闭neo4j的情况下还原备份,或者可以在不关闭容器的情况下关闭neo

  • 似乎“.dotnet”文件夹在Docker容器中受到保护。是否有一种方法可以获得对此的读/写权限,或者改变它的位置?当我猛击容器时,我似乎找不到文件夹。 谢谢你的帮助。

  • 问题内容: 我有一个在1G RAM主机中运行的Docker容器(也有在同一主机中运行的其他容器)。该Docker容器中的应用程序将解码一些图像,这可能会消耗大量内存。 该容器会不时退出。我怀疑这是由于内存不足,但不是很确定。我需要找到根本原因的方法。那么,有什么办法知道这个集装箱的死亡发生了什么? 问题答案: 其他人提到查看应用程序的输出。这永远是我要检查的第一件事。 接下来,您可以运行查看状态的

  • 我认为这是因为容器没有JAVA_HOME变量集。我执行了和尝试命令,但它没有显示java可执行文件。此外,java和javac命令不起作用。 有人知道我做错了什么吗?如有任何帮助,不胜感激。提前感谢!

  • 问题内容: 有一个列出图像的命令,但是似乎没有对应的。 除了扎根并调查那里似乎没有办法。我想念什么吗?那是不应该做的事情吗? 问题答案: 要仅显示 正在运行的容器,请 使用给定命令: 要显示 所有容器,请 使用给定命令: 要显示 最新创建的容器 (包括所有状态),请使用给定命令: 要显示 n个最后创建的容器 (包括所有状态),请使用给定命令: 要显示 总文件大小,请 使用给定命令: 上面显示的内容

  • 我很难弄清楚如何设置在Docker容器中运行的python应用程序(Flask)的远程调试。具体来说,我使用的是docker compose、PyCharm professional和python 3.5。这就是我到目前为止所做的: > 我把pycharm-debug-py3k.egg复制到项目文件夹 我在wsgi.py文件中添加了以下行: 我在PyCharm中创建了一个远程调试配置(通过将本地机

  • 我不是docker的专家,也许我缺少一些基本配置。有什么想法为什么我不能使用POI?提前道谢。