花了我几个小时的时间,但我终于得到了我们的私人github nuget包仓库,接受上传,并允许我将这些包添加到本地项目中(然后愉快地构建)。我不得不摆弄%AppData%RoamingNuGet NuGet。配置并添加所需的凭据。
然而,我无法得到dockerfile的dotnet构建步骤来识别有多个源,它似乎只寻找nuget.org
nuget.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="[myCompany]" value="https://nuget.pkg.github.com/[myCompany]/index.json" />
</packageSources>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<bindingRedirects>
<add key="skip" value="False" />
</bindingRedirects>
<packageManagement>
<add key="format" value="0" />
<add key="disabled" value="False" />
</packageManagement>
<packageSourceCredentials>
<[myCompany]>
<add key="Username" value="[myUserName]" />
<add key="ClearTextPassword" value="[PAT Key]" />
</[myCompany]>
</packageSourceCredentials>
</configuration>
DockerFile:
FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["[myApp]/[myApp].csproj", "[myApp]/"]
RUN dotnet restore "[myApp]/[myApp].csproj"
COPY . .
WORKDIR "/src/[myApp]"
RUN dotnet build "[myApp].csproj" -c Release -o /app/build
:
:
构建的输出:
PS G:[myCompany][myApp]> docker build -t [myApp] .
[+] Building 6.3s (12/18)
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 32B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for mcr.microsoft.com/dotnet/sdk:6.0 0.4s
=> [internal] load metadata for mcr.microsoft.com/dotnet/runtime:6.0 0.3s
=> [build 1/7] FROM mcr.microsoft.com/dotnet/sdk:6.0@sha256:09c76ca233d3a413fd72bd0bc8c342ed12a8b55f1cc29ac455c0 0.0s
=> [internal] load build context 0.1s
=> => transferring context: 37.90kB 0.0s
=> [base 1/2] FROM mcr.microsoft.com/dotnet/runtime:6.0@sha256:20c5363575c40c5a22993698d4f62291bfa564709c7677cbf 0.0s
=> CACHED [base 2/2] WORKDIR /app 0.0s
=> CACHED [final 1/2] WORKDIR /app 0.0s
=> CACHED [build 2/7] WORKDIR /src 0.0s
=> CACHED [build 3/7] COPY [[myApp]/[myApp].csproj, [myApp] 0.0s
=> ERROR [build 4/7] RUN dotnet restore "[myApp]/[myApp].csproj" 5.8s
------
> [build 4/7] RUN dotnet restore "[myApp]/[myApp].csproj":
#12 1.007 Determining projects to restore...
#12 5.536 /src/[myApp]/[myApp].csproj : error NU1101: Unable to find package [myNugetPackage]. No packages exist with this id in source(s): nuget.org
#12 5.636 Failed to restore /src/[myApp]/[myApp].csproj (in 4.46 sec).
------
executor failed running [/bin/sh -c dotnet restore "[myApp]/[myApp].csproj"]: exit code: 1
PS G:[myCompany][myApp]>
我试过添加nuget。配置到不同的文件夹和解决方案/项目-没有变化。
我还尝试添加路径到nuget。使用——configfile参数配置到DockerFile -不幸的是"/src">
帮助吗?
当你在Dockerfile中做dotnet恢复的时候,nuget。配置文件尚未复制到映像中。你只复制了。csproj文件。