我正在尝试在容器技术上启动我的.net核心web应用程序接口。使用docker。
Environments=Windows 10,Visual Studio
Docker版本:
客户端:
版本: 17.12.0-ce
API版本: 1.35
Go版本: go1.9.2
Git提交: c97c6d6
构建时间: Wed Dec 27 20:05:22 2017
操作系统/架构: windows/amd64
服务器:
引擎:
版本: 17.12.0-ce
API版本: 1.35 (最低版本为1.12)
Go版本: go1.9.2
Git提交: c97c6d6
构建时间: Wed Dec 27 20:12:29 2017
操作系统/架构: linux/amd64
实验:正确
我的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="Private"
value="http://My_Private_Nuget_Server" />
</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="True" />
</packageManagement>
<apikeys>
<add key="https://www.nuget.org" value="Some_Long_Value" />
</apikeys>
<disabledPackageSources />
</configuration>
我的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", "MailAlertWebApiWithEF.dll"]
我在Windows10机器上使用Linux容器。我在Visual Studio17上有.net核心项目。当ı添加docker支持并在VS17上运行时,一切都很好。当我关闭VS时,container.But内部的API就不起作用了。然而,当ı试图定制我的dockerfile以使我的图像和容器独立于VS时。它会因为一个私有的.dll
而产生错误。
在我的项目ı中,有一个来自我的私有nuget服务器的.nget。当ı在没有我的私有.dll
的情况下尝试时,ı可以创建镜像。但是ı需要那个.dll
。Docker给我这个错误:
MailAlertWebApiWithEF.csproj :错误NU1101:找不到程序包WebApi.Utils。源中不存在具有此id的包: nuget.org
我搜索了这个错误。问题的根源似乎是Nuget.Config文件。但这对我来说似乎很好,因为我可以在那里看到我的私人nuget服务器。当ı搜索解决方案时,箭头总是在linux机器上,但ı使用的是windows。
1-)所以如果我可以从VS17开始我的项目,那么我的nuget.config文件的格式是正确的。它可以看到我的私人nuget服务器。对吗?那为什么不让docker看不到呢?
请帮帮忙
发布于 2018-02-18 18:11:18
为了使在容器中运行的dotnet
命令能够找到您的自定义提要,还必须将nuget.config
文件复制到容器中。
为此,将一个包含私有提要的nuget.config
文件添加到您的项目文件夹,并添加一个额外的COPY
步骤,将该文件复制到容器中。
示例(Dockerfile):
WORKDIR ...
COPY NuGet.Config /
COPY ... ...
发布于 2019-01-03 14:27:05
对于那些使用私有存储库或自定义nuget提要和运行dotnet restore is failing的用户,您可以这样做:
特别适用于:您的NuGet.Config包含私有存储库端点和凭据,则
COPY ./NuGet.Config ./
RUN dotnet restore <CS_project_name>.csproj --configfile ./NuGet.Config
在入口点之前或复制到其他容器之前(在多阶段构建的情况下),删除
RUN rm ./NuGet.Config
在https://github.com/NuGet/Home/issues/4413#issuecomment-483920015上提到的更新
如果我们使用下面的copy命令将它放在文件系统的根目录中
COPY ./NuGet.Config /nuget.config
这样我们就不需要在dotnet restore
过程中指定配置文件的位置
发布于 2020-08-21 18:34:04
您可以通过dotnet命令添加私有nuget,而不需要链接到nuget.config文件。
COPY *.csproj ./
RUN dotnet nuget add source <source-value-of-nuget> -n <name>
RUN dotnet restore
https://stackoverflow.com/questions/48821991
复制相似问题