如果项目依赖于共享网络驱动器中的 nuget 私有包,如何使用 docker-compose 创建容器?
How to create a container with docker-compose if the project depends on a nuget private package in a share network drive?
我有一个 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>
我尝试复制nuget/myrepo文件夹下的nugetpackage私服内容。 docker文件看起来像:
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文件,也不需要修改docker文件为
COPY \networkpath\to\the\nuget_packages_folder /nuget/myrepo/
问题只出现在发布模式。
解决方案是将 NuGet 包复制到项目的一个文件夹中,并在 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>
这远不是一个好的解决方案,但我认为目前没有其他选择。
我有一个 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>
我尝试复制nuget/myrepo文件夹下的nugetpackage私服内容。 docker文件看起来像:
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文件,也不需要修改docker文件为
COPY \networkpath\to\the\nuget_packages_folder /nuget/myrepo/
问题只出现在发布模式。
解决方案是将 NuGet 包复制到项目的一个文件夹中,并在 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>
这远不是一个好的解决方案,但我认为目前没有其他选择。