【问题标题】:Docker container with ASP.NET Core libraries带有 ASP.NET Core 库的 Docker 容器
【发布时间】:2016-06-30 05:40:29
【问题描述】:

每次我使用 ASP.NET Core 应用程序构建 Dockerfile 时,它​​都会从网络 Nuget 商店下载程序集。

基本上我想用所有这些 ASP.NET Core 库(可能还有一些我经常使用的库)创建 docker 映像。

据我了解,我试图重塑 GAC。

那么,我的问题是可以为 ASP.NET Core 使用像 GAC 这样的东西吗?或者,我的第二个想法是,将 ASP.NET Core 库下载到容器中,然后以某种方式在本地解析它。

我的目标是减少构建 docker 容器的时间。

更新

看来不可能

【问题讨论】:

    标签: .net docker asp.net-core asp.net-core-mvc .net-core


    【解决方案1】:

    对于 ASP.NET 核心,只需使用 dnu 将您的应用程序构建到一个独立的文件夹中。

    dnu publish 
    

    将输出构建项目并将其输出到/bin/output。您可以使用许多选项,包括指定输出路径、选择框架或运行时,甚至更改启动网络的命令。

    dnu publish --help
    

    将为您提供更多详细信息。

    【讨论】:

    • 谢谢。这不完全是我试图做的。在这种情况下,我需要为简单的 webapp 复制到大约 500 mb 的容器。而且我只想复制我的应用程序,因此框架之类的所有内容都应该在另一个容器层中。
    • @VadimSentyaev:这个框架不像旧的 .NET 框架那样工作。它没有全局安装到机器上;它从一个文件夹运行。所有应用程序,包括 webapps,都需要在给定路径上具有本地框架。这意味着如果您尝试将框架与应用程序分离,那么您将不得不管理来自父容器的路径并从应用程序层访问它们。当 Microsoft 已经为您解决了这个问题时,这对您自己来说是相当多的工作。这正是存在发布的原因。
    【解决方案2】:

    现在有一个来自 Microsoft 的官方 .NET Core Docker 映像,其中包含所有需要的库。

    你可以在这里得到它:

    https://hub.docker.com/r/microsoft/aspnetcore/

    如果需要自定义,别忘了可以修改容器,用“docker commit”创建自定义镜像。

    【讨论】:

      【解决方案3】:

      如果您想包含一个“包”(文件夹),其中包含您的应用程序、它的依赖项和运行时,那么您必须运行:

      dnu publish --runtime <active/runtime name> [--no-source]
      

      --no-source 选项编译所有内容并增加启动时间,但无法更改容器中的代码。

      【讨论】:

        猜你喜欢
        • 2021-12-15
        • 2018-11-17
        • 2019-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-18
        • 2017-10-17
        • 1970-01-01
        相关资源
        最近更新 更多