如果项目依赖共享网络驱动器中的nuget私有包,如何使用docker-compose创建容器?

时间:2019-03-25 10:48:35

标签: docker asp.net-core docker-compose nuget-package

我有一个asp.net核心webapi解决方案,它使用位于共享网络驱动器中的私有存储库中的NuGet包。

我所做的是在项目目录中添加以下行:nuget.linux.config文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <packageSources>
    <add key="myrepo" value="/nuget/myrepo/" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>

我试图将nugetpackage专用服务器的内容复制到nuget / myrepo文件夹中。 dockerfile看起来像:

FROM microsoft/dotnet:2.1-runtime AS base
WORKDIR /app

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src

COPY projectfolder/NuGet.linux.config .
COPY projectfolder/project.csproj projectfolder/
VOLUME /nuget/myrepo/

COPY \\networkpath\to\the\nuget_packages_folder /nuget/myrepo/
RUN dotnet restore projectfolder/project.csproj
COPY . .
WORKDIR /src/projectfolder
RUN dotnet build project.csproj -c Release -o /app --no-restore

FROM build AS publish
RUN dotnet publish project.csproj -c Release -o /app --no-restore

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "project.dll"]

但这不起作用.. 如何在vs2017中使用docker-compose项目为共享网络中的nuget包创建引用的项目的容器映像?

如果项目是在调试模式下构建的,则不需要添加nuget.config文件,也不需要使用

修改dockerfile。
COPY \\networkpath\to\the\nuget_packages_folder /nuget/myrepo/

问题仅在发布模式下出现。

1 个答案:

答案 0 :(得分:0)

解决方案是将nugetpackage复制到项目的文件夹中,并在dockerfile中添加以下内容:

VOLUME /nuget/myrepo/
COPY projectfolder/NugetPackage/ /nuget/myrepo/

和nuget.config文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <packageSources>
    <add key="myrepo" value="/nuget/myrepo/" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>

这远不是一个好的解决方案,但我认为目前还没有其他选择。