有没有办法在基于Linux的Docker镜像上获取NuGet?
我尝试了这个:
ARG PAT
FROM microsoft/dotnet:sdk AS build
WORKDIR /app
COPY src/IdentityServer/ ./
# the annoying NuGet installation
RUN wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
RUN dpkg -i packages-microsoft-prod.deb
RUN apt-get install nuget
RUN nuget sources add -name yyyy-source https://xxxx.pkgs.visualstudio.com/_packaging/yyyy/nuget/v3/index.json -username dummy -password ${PAT}
RUN dotnet publish -c Release -o out
FROM microsoft/dotnet:aspnetcore-runtime AS runtime
WORKDIR /app
COPY --from=build /app/out ./
ENTRYPOINT ["dotnet", "IdentityServer.dll"]
我得到这个:
Step 5/13 : RUN wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
---> Using cache
---> db337597f4fe
Step 6/13 : RUN dpkg -i packages-microsoft-prod.deb
---> Running in c361881586a3
Selecting previously unselected package packages-microsoft-prod.
(Reading database ... 12109 files and directories currently installed.)
Preparing to unpack packages-microsoft-prod.deb ...
Unpacking packages-microsoft-prod (1.0-3) ...
Setting up packages-microsoft-prod (1.0-3) ...
Removing intermediate container c361881586a3
---> 6a56d436e5da
Step 7/13 : RUN apt-get install nuget
---> Running in c47705590796
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package nuget
The command '/bin/sh -c apt-get install nuget' returned a non-zero code: 100
但是有些人成功地在Linux上安装了NuGet软件包:
How to install NuGet from command line on linux
最佳答案
我看到您尝试获取nuget.exe的唯一原因是添加凭据。 This page in the docs包含有关如何使用dotnet cli对Azure Devops进行身份验证的链接。您的用例属于CI构建部分的“否则”语句,因此您可以use an environment variable指定您的PAT。因此,您实际上不需要nuget。
关于docker - NuGet在Docker上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53347425/