首页 > 解决方案 > Nuget 命令在 docker 文件中失败,但在手动运行时失败

问题描述

我正在尝试配置一个容器来运行我的构建。(它是一个 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

标签: dockernugetcontainersdockerfile

解决方案


我试过了,让它像这样工作:

如果你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

推荐阅读