我正在尝试启动有关容器技术的.net核心Web api。使用泊坞窗。
环境= Windows 10,Visual Studio
Docker版本:
客户: 版本:17.12.0-ce API版本:1.35 Go版本:go1.9.2 Git提交:c97c6d6 建成:2017年12月27日星期三20:05:22 操作系统/ Arch:Windows / amd64 服务器: 发动机: 版本:17.12.0-ce API版本:1.35(最低版本1.12) Go版本:go1.9.2 Git提交:c97c6d6 建成:2017年12月27日星期三20:12:29 操作系统/ Arch:linux / amd64 实验性:真实
客户:
版本:17.12.0-ce
API版本:1.35
Go版本:go1.9.2
Git提交:c97c6d6
建成:2017年12月27日星期三20:05:22
操作系统/ Arch:Windows / amd64
服务器:
发动机:
API版本:1.35(最低版本1.12)
建成:2017年12月27日星期三20:12:29
操作系统/ Arch: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"]
我在Windows 10计算机上使用Linux容器。我在Visual Studio 17上有.net核心项目。当ı添加docker支持并从VS 17运行时,一切正常。API站立在容器中。但是当我关闭VS时不起作用。但是当我尝试自定义我的dockerfile以使我的图像和容器独立于VS时。由于私有导致错误.dll。
.dll
在我的项目中,我有一个。dll 从我的私有nuget服务器。当没有我的私人ı尝试时,.dll可以创建图像。但是我需要那个.dll。Docker给我这个错误:
dll
MailAlertWebApiWithEF.csproj:错误NU1101:无法找到软件包WebApi.Utils。在源中不存在具有此id的软件包:nuget.org
我搜索了此错误。问题的源似乎是Nuget.Config文件。但是对我来说似乎很好,因为我可以在那里看到我的私有nuget服务器。当我在Linux机器上搜索解决方案箭头时,总是使用Windows。
1-)所以如果我可以从VS 17开始我的项目,那么我的nuget.config文件格式正确。它可以看到我的私有nuget服务器。对?那为什么码头工人看不到它呢?
请帮忙
为了使dotnet在容器中运行的命令能够找到您的自定义供稿,nuget.config还必须将文件复制到容器中。
dotnet
nuget.config
为此,将nuget.config带有私人提要的文件添加到项目文件夹,并添加COPY将此文件复制到容器的其他步骤。
COPY
示例(Dockerfile):
WORKDIR ... COPY NuGet.Config / COPY ... ...