首页 > 解决方案 > 如何在 docker 镜像中使用本地生成的 NuGet?

问题描述

我有一个用例,我的机器上已经本地生成了一个 .nupkg 文件。我想在 docker 镜像中使用这个本地 nuget 文件。下面是现有 docker 文件的样子 -

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /app

RUN mkdir -p /nuget
ADD nuget /nuget/

COPY src/*.csproj .
RUN dotnet restore

COPY src/ .
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
WORKDIR /app
COPY --from=build /app/out ./
ENTRYPOINT ["dotnet", "EdgeService.dll"]

因此,在该RUN dotnet restore步骤中,它会从 nuget.org 存储库中获取特定的 nuget 包并构建映像。我想要一种机制,它可以使用我在本地机器上拥有的 .nupkg 文件,而不是从 nuget 服务器获取。

我可以在 .csproj 文件或 docker 文件中进行一些更改以确保它发生吗?在这种情况下是否需要设置本地 nuget 服务器?

标签: c#dockerasp.net-corenugetnuget-package-restore

解决方案


是的,您需要在某处运行的 nuget 服务器。本地很棒,直到您想要设置 CI,然后您需要一个托管的。在后来迁移到 GitHub 包之前,我使用了一个带有 nuget 服务器的托管 docker 容器。

在运行此设置一段时间后,我发现为每次更改重新构建包都很痛苦,因此我重新构建了我的解决方案,根本不需要私有 NuGet 包。


推荐阅读