【问题标题】:Nuget command fails in docker file but not when run manuallyNuget 命令在 docker 文件中失败,但在手动运行时失败
【发布时间】:2019-07-02 22:28:59
【问题描述】:

我正在尝试配置一个容器来运行我的构建。 (它是一个 Windows 核心容器。)

当我在 docker 文件中运行 nuget 命令时,它会失败。但是当我将 powershell 连接到容器时,它运行良好。

这是有问题的命令:

nuget sources Add -Name "Common Source" -Source http://CompanyPackages/nuget/Common

我像这样从 docker 文件运行它:

RUN nuget sources Add -Name "Common Source" -Source http://CompanyPackages/nuget/Common

并得到以下错误:

sources: invalid arguments.

但是,当我拿起容器并使用以下方法启动它时:

docker run -it agent:v1

然后在容器内运行同样的命令:

nuget sources Add -Name "Common Source" -Source http://CompanyPackages/nuget/Common

结果是:

Package Source with Name: Common added successfully.

什么会导致它在 dockerfile 而不是容器中失败?

注意:

如果有用,这里是我的完整 docker 文件:

 FROM sixeyed/msbuild:netfx-4.5.2-webdeploy AS build-agent
 SHELL ["powershell"]

 RUN nuget sources Add -Name "Common Source" -Source http://CompanyPackages/nuget/Common

【问题讨论】:

  • 也许这是一些愚蠢的简单事情,比如转义括号或使用大括号符号 run (RUN ["nuget", "sources", "Add" ...])?
  • nuget 的参数是否区分大小写?您是否必须使用“nuget sources add”而不是“nuget sources Add”?
  • 另一个原因可能是nuget.config 还没有像@stackoverflow.com/questions/48821991/… 描述的那样到位。也许先做COPY NuGet.Config /
  • 也许SHELL ["powershell", "-command"] 就像docs 一样。
  • 你能发布你的nuget.config吗?这是寻找问题的第一个地方。

标签: docker nuget containers dockerfile


【解决方案1】:

我试了一下,结果是这样的:

如果您像这样更改Dockerfile 的内容:

FROM sixeyed/msbuild:netfx-4.5.2-webdeploy AS build-agent
SHELL ["powershell"]
RUN ["nuget", "sources" , "Add", "-Name", "\"Common Source\"", "-Source" ,"http://CompanyPackages/nuget/common"]

然后当你运行docker build -t yourImageName .

你会得到这个:

Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM sixeyed/msbuild:netfx-4.5.2-webdeploy AS build-agent
 ---> 0851a5b495a3
Step 2/3 : SHELL ["powershell"]
 ---> Running in 10082a1c45f8
Removing intermediate container 10082a1c45f8
 ---> c00b912c6a8f
Step 3/3 : RUN ["nuget", "sources" , "Add", "-Name", "\"Common Source\"", "-Source" ,"http://CompanyPackages/nuget/common"]
 ---> Running in 797b6c055928
Package Source with Name: "Common Source" added successfully.
Removing intermediate container 797b6c055928
 ---> 592db3be9f8b
Successfully built 592db3be9f8b
Successfully tagged nuget-tester:latest

【讨论】:

  • 图片的下载大小约为 4 gig,提取大小约为 11 gig o_O
  • 我将在这里奖励赏金,因为它与参数相关并且有效。对于将来发现此问题的其他人,我还发现从源名称中删除空格可以解决问题。 (所以-Name "Common Source"改为-Name "CommonSource"
猜你喜欢
  • 1970-01-01
  • 2017-04-28
  • 2011-10-29
  • 2017-08-15
  • 2019-05-28
  • 2019-07-01
  • 1970-01-01
  • 2016-06-23
  • 1970-01-01
相关资源
最近更新 更多