如何添加字体到Windows Docker container/image?
How to add Fonts to Windows Docker container/image?
我有一个基于 .NET Framework v4.8 构建的控制台应用程序。我正在尝试使用 docker 图像在 Azure 容器实例 (ACI) 中 运行 它。我已经在本地创建了一个 docker 图像并将其推送到 ACI,它已成功 运行ning。
现在我面临一个问题。此应用程序发送一封包含 RDLC 报告的电子邮件。但是我在邮件中收到的报告的字体与我之前收到的报告的字体不同(没有 docker)。我发现我使用的基础 docker 图像 mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019
没有加载字体。我需要在 docker image/container 中安装字体。我该怎么做?
下面是我的 Dockerfile 命令:
FROM mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019 AS BASE
COPY . .
ENTRYPOINT BackgroundService.exe
我做了一些调查,找到了一种使用 Dockerfile 将字体添加到容器的方法。我们需要在 docker 行下面 file:
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
如果我们只需要将字体添加到容器而不是图像,以下解决方案可能会有所帮助:
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 [launcher]: Starting browser Chrome
15 09 2021 08:54:12.400:ERROR [launcher]: Cannot start Chrome
[0915/085411.853:ERROR:network_change_notifier_win.cc(228)] WSALookupServiceBegin failed with: 0
DevTools listening on ws://127.0.0.1:9222/devtools/browser/46bdbf30-8381-473a-9816-a5ad56f9c71a
[0915/085411.978:ERROR:platform_font_skia.cc(344)] Could not find any font: Segoe UI, sans. Falling back to the default
在文档 (link) 中注意以下句子可能也很重要:
If you only copy the font into the %windir%\fonts folder, the font will be available only after the system is rebooted.
我有一个基于 .NET Framework v4.8 构建的控制台应用程序。我正在尝试使用 docker 图像在 Azure 容器实例 (ACI) 中 运行 它。我已经在本地创建了一个 docker 图像并将其推送到 ACI,它已成功 运行ning。
现在我面临一个问题。此应用程序发送一封包含 RDLC 报告的电子邮件。但是我在邮件中收到的报告的字体与我之前收到的报告的字体不同(没有 docker)。我发现我使用的基础 docker 图像 mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019
没有加载字体。我需要在 docker image/container 中安装字体。我该怎么做?
下面是我的 Dockerfile 命令:
FROM mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019 AS BASE
COPY . .
ENTRYPOINT BackgroundService.exe
我做了一些调查,找到了一种使用 Dockerfile 将字体添加到容器的方法。我们需要在 docker 行下面 file:
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
如果我们只需要将字体添加到容器而不是图像,以下解决方案可能会有所帮助:
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 [launcher]: Starting browser Chrome 15 09 2021 08:54:12.400:ERROR [launcher]: Cannot start Chrome [0915/085411.853:ERROR:network_change_notifier_win.cc(228)] WSALookupServiceBegin failed with: 0
DevTools listening on ws://127.0.0.1:9222/devtools/browser/46bdbf30-8381-473a-9816-a5ad56f9c71a [0915/085411.978:ERROR:platform_font_skia.cc(344)] Could not find any font: Segoe UI, sans. Falling back to the default
在文档 (link) 中注意以下句子可能也很重要:
If you only copy the font into the %windir%\fonts folder, the font will be available only after the system is rebooted.