Установка шрифтов на Контейнере Докера под управлением Ubuntu 18.04

Я пытаюсь установить шрифты в контейнере докера под управлением Ubuntu 18.04 (Dockerfile наследовался ноутбуку Jupyter scipy, который наследовал от основы jupyter изображение, Dockerfile здесь).

Я попробовал много разных вещей включая этот ответ и другие предложения там.

Мой Dockerfile похож

FROM jupyter/scipy-notebook

USER root

# bash instead of dash to use source
RUN ln -snf /bin/bash /bin/sh

# These require sudo so they must come before defining
# a user

# Font attempt
COPY GillSansMTPro-Medium.otf /usr/local/share/fonts
RUN fc-cache -f -v

# installing some pip packages

Когда я пытаюсь использовать этот шрифт в matplotlib, я вижу эту ошибку: error message

Я попытался добавить

RUN rm -fr ~/.cache/matplotlib

к моему Dockerfile (после части, показанной выше), так как я считал онлайн, что мог решить проблему. Это не работало также.

Кроме того, если я перешел к /usr/local/share/fonts, шрифт там как ожидалось.

Какие-либо идеи, как решить это?

3
задан 17 October 2018 в 19:31

2 ответа

Я был в той же ситуации как Вы прежде.

Вот мой файл Докера. Я надеюсь, что это может помочь Вам.

FROM jupyter/scipy-notebook

# create directory for cuistom.css and copy it.
RUN mkdir -p /home/jovyan/.jupyter/custom
COPY custom.css /home/jovyan/.jupyter/custom

# create font directory and copy the font
RUN mkdir -p /home/jovyan/.fonts
COPY D2Coding.ttf /home/jovyan/.fonts
COPY D2CodingBold.ttf /home/jovyan/.fonts

# refresh system font cache
RUN fc-cache -f -v

# refresh matplotlib font cache
RUN rm -fr ~/.cache/matplotlib

Это работает в моем случае.

0
ответ дан 1 December 2019 в 20:13

У меня была подобная проблема с использованием пользовательских шрифтов из сервиса Java, работающего в контейнере Докера. В основном существует два пути, как можно настроить вещи:

  1. Поместите шрифты в изображение при создании его,
  2. Присоедините объем со шрифтами при запуске контейнера;

Первый полезен при планировании многократного использования контейнера различные приложения, которые требуют шрифтов. Для последнего можно подготовить среду однажды (например, протестировать или подталкивать), и затем совместно используйте шрифты через различные контейнеры докера (даже сторонние) без потребности восстановить их.

Вот пример, как подготовить ENV и затем присоединить шрифты для данного случая:

$ wget https://www.paratype.ru/uni/public/PTSans.zip \
 -O ~/.fonts/PTSans.zip
$ cd ~/.fonts 
$ unzip PTSans.zip
$ sudo cp -rfv .fonts /usr/share/fonts/
$ cd /usr/share/fonts/
$ sudo mv .fonts/ pt_sans/
$ cd pt_sans
$ fc-cache -fv
$ docker run -d --name reports \
  -v /usr/share/fonts/pt_sans:/usr/share/fonts/pt_sans \
  your-container/reports

Удостоверьтесь, что Вы обновили его с соответствующими названиями Вашего случая.

Существуют еще некоторые детали, описанные в этой статье.

0
ответ дан 1 December 2019 в 20:13

Другие вопросы по тегам:

Похожие вопросы: