当前位置:  开发笔记 > 编程语言 > 正文

如何在.NET Core app docker镜像中包含依赖项?

如何解决《如何在.NETCoreappdocker镜像中包含依赖项?》经验,为你挑选了1个好方法。

我正在尝试构建一个.NET Core app docker镜像.但我无法弄清楚我应该如何将项目的NuGet依赖项放入图像中.

为简单起见,我创建了一个.NET Core控制台应用程序:

using System;
using Newtonsoft.Json;

namespace ConsoleCoreTestApp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine($"Hello World: {JsonConvert.False}");
        }
    }
}

它只有一个NuGet依赖Newtonsoft.Json.当我从Visual Studio运行应用程序时,一切正常.

但是,当我从项目创建Docker镜像并尝试从那里执行应用程序时,它无法找到依赖项:

# dotnet ConsoleCoreTestApp.dll
Error: assembly specified in the dependencies manifest was not found -- package: 'Newtonsoft.Json', version: '9.0.1', path: 'lib/netstandard1.0/Newtonsoft.Json.dll'

这是预期的,因为Newtonsoft.Json.dllVisual Studio没有将其复制到输出文件夹.

这是Dockerfile我正在使用的:

FROM microsoft/dotnet:1.0.0-core
COPY bin/Debug /app

是否有推荐的方法来处理这个问题?

我不想dotnet restore在容器内部运行(因为我不希望每次容器运行时都重新下载所有依赖项).

我想我可以添加一个RUN dotnet restore条目Dockerfile但是我不能再microsoft/dotnet:-core用作基本图像了.

我找不到让Visual Studio将所有依赖项复制到输出文件夹的方法(就像使用常规.NET Framework项目一样).



1> Sebastian Kr..:

经过一番阅读后,我终于明白了.

而不是dotnet build你运行:

dotnet publish

这会将所有文件(包括依赖项)放在一个publish文件夹中.然后,此文件夹可以直接与microsoft/dotnet:-core图像一起使用.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有