如何在Docker映像中使用本地产生的NuGet?

问题描述

我有一个用例,其中我的计算机上已经本地生成一个.nupkg文件。 我想在docker映像中使用此本地nuget文件。以下是现有docker文件的外观-

class CheckBoxCustom extends StatefulWidget {
  @override
  _CheckBoxCustomState createState() => _CheckBoxCustomState();
}

class _CheckBoxCustomState extends State<CheckBoxCustom> {
  bool checkedValue = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: CheckBoxListTile(
          title: Text("title text"),value: checkedValue,onChanged: (newValue) {
            setState(() {
              checkedValue = newValue;
            });
          },controlAffinity:
              ListTileControlAffinity.leading,//  <-- leading CheckBox
        ),),);
  }
}

因此,在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"] 步骤中,它从nuget.org存储库中获取特定的nuget程序包并构建映像。我想要一种机制,它可以使用本地计算机上的.nupkg文件,而不是从nuget服务器获取文件

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

解决方法

是的,您需要在某个地方运行nuget服务器。 Local很不错,除非您要设置CI,然后再需要托管CI。在稍后迁移到GitHub软件包之前,我在其中使用了带有nuget服务器的托管Docker容器。

运行该设置一段时间后,我发现每次更改都需要重新构建软件包,因此我重新配置了解决方案,根本不需要私有NuGet软件包。

,

以下是我为使其正常运行所做的更改-

Dockerfile更改-

RUN mkdir -p /nuget
ADD Nuget /tmp/Nuget

COPY src/*.csproj .
RUN dotnet restore

.csproj文件中的更改-

<RestoreSources>$(RestoreSources);https://api.nuget.org/v3/index.json;/tmp/Nuget</RestoreSources>

然后在Nuget文件夹中,我复制了.nupkg文件,该文件希望被docker映像引用。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...