【问题标题】:How to add Fonts to Windows Docker container/image?如何将字体添加到 Windows Docker 容器/图像?
【发布时间】:2020-01-16 23:01:26
【问题描述】:

我有一个基于 .NET Framework v4.8 构建的控制台应用程序。我正在尝试使用 docker 映像在 Azure 容器实例(ACI)中运行它。我在本地创建了一个 docker 映像并将其推送到 ACI 并且它运行成功。

现在我面临一个问题。此应用程序会发送一封包含 RDLC 报告的电子邮件。但是我在邮件中收到的报告的字体与我之前收到的报告不同(没有 docker)。我发现我使用的基础 docker 镜像 mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019 没有加载字体。我需要在我的 docker 镜像/容器中安装字体。我该怎么做?

以下是我的 Dockerfile 命令:

FROM mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019  AS BASE
COPY . .
ENTRYPOINT BackgroundService.exe

【问题讨论】:

    标签: docker containers azure-container-instances windows-container .net-4.8


    【解决方案1】:

    我进行了一些调查,并找到了一种使用 Dockerfile 将字体添加到容器的方法。我们需要下面的 docker 文件:

    COPY arial*.ttf c:/windows/fonts/

    以下是更新后的 Dockerfile:

    # app image
    FROM mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019  AS BASE
    COPY arial*.ttf c:/windows/fonts/
    COPY . .
    ENTRYPOINT BackgroundService.exe
    

    【讨论】:

      【解决方案2】:

      如果我们只需要将字体添加到容器而不是图像中,以下解决方案可能会有所帮助:

      docker run -dit --name "my-chromium-agent" my-agent-image:latest `
        -v C:\Windows\Fonts:C:\Windows\Fonts
      

      注意:将本地系统的Fonts文件夹直接挂载到容器中可能存在安全隐患。

      如果您在 Windows servercore 1909 docker 映像上使用 Chromium 时遇到以下错误,上述解决方案将有所帮助:

      15 09 2021 08:54:11.665:INFO [启动器]:启动浏览器 Chrome 15 09 2021 08:54:12.400:ERROR [启动器]:无法启动 Chrome [0915/085411.853:ERROR:network_change_notifier_win.cc(228)] WSALookupServiceBegin 失败:0

      DevTools 监听 ws://127.0.0.1:9222/devtools/browser/46bdbf30-8381-473a-9816-a5ad56f9c71a [0915/085411.978:ERROR:platform_font_skia.cc(344)] 找不到任何字体:Segoe UI,sans。回退到默认值

      请注意文档中的以下句子 (link):

      如果只将字体复制到 %windir%\fonts 文件夹中,则字体只有在系统重启后才能使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-29
        • 2019-09-19
        • 2015-02-26
        • 2017-07-11
        • 1970-01-01
        • 2015-04-02
        相关资源
        最近更新 更多