Я пытаюсь установить шрифты в контейнере докера под управлением 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, я вижу эту ошибку:
Я попытался добавить
RUN rm -fr ~/.cache/matplotlib
к моему Dockerfile (после части, показанной выше), так как я считал онлайн, что мог решить проблему. Это не работало также.
Кроме того, если я перешел к /usr/local/share/fonts
, шрифт там как ожидалось.
Какие-либо идеи, как решить это?
Я был в той же ситуации как Вы прежде.
Вот мой файл Докера. Я надеюсь, что это может помочь Вам.
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
Это работает в моем случае.
У меня была подобная проблема с использованием пользовательских шрифтов из сервиса Java, работающего в контейнере Докера. В основном существует два пути, как можно настроить вещи:
Первый полезен при планировании многократного использования контейнера различные приложения, которые требуют шрифтов. Для последнего можно подготовить среду однажды (например, протестировать или подталкивать), и затем совместно используйте шрифты через различные контейнеры докера (даже сторонние) без потребности восстановить их.
Вот пример, как подготовить 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
Удостоверьтесь, что Вы обновили его с соответствующими названиями Вашего случая.
Существуют еще некоторые детали, описанные в этой статье.