【发布时间】:2018-01-14 14:28:32
【问题描述】:
我是 docker 新手,我开发了一个简单的 asp.net 核心 webapi 解决方案,它使用来自私有存储库的 NuGet 包。
dotnet restore 命令返回一个错误,因为丢失的 NuGet 包位于解决方案中的 nuget.config 文件中引入的私有存储库中。
有人知道我的配置和 dockerfile 有什么问题吗?
Dockerfile
FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetcoretssl.dll"]
.dockerignore
bin\
obj\
我在解决方案的根目录中有一个 nuget.config 文件,如下所示
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="myrepo" value="\\path\to\the\nuget_packages_folder" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
但我收到以下来自
的消息docker build -t aspnetcoretssl .
错误 NU1101:找不到包 TestContracts。不存在包 在源中使用此 id:nuget.org 生成 MSBuild 文件 /app/obj/aspnetcoretssl.csproj.nuget.g.props.
命令“/bin/sh -c dotnet restore”返回非零代码:1
【问题讨论】:
-
很可能您在 linux 容器中运行 dotnet restore 并且它无法访问位于某些 Windows 共享文件夹中的自定义 nuget 目录
-
@PavelAgarkov ,是的,这是我最初的猜测,但通过在解决方案中提供 nuget.config 应该可以解决。
标签: docker asp.net-core nuget-package dotnet-restore