web-dev-qa-db-fra.com

Installation de polices sur Docker Container exécutant Ubuntu 18.04

J'essaie d'installer des polices dans un conteneur docker exécutant Ubuntu 18.04 (Dockerfile hérite du portable Jupyter scipy qui hérite de l'image de base jupyter, Dockerfile ici ).

J'ai essayé beaucoup de choses différentes, y compris this réponse et d'autres suggestions là-dedans.

Mon Dockerfile ressemble

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

Lorsque j'essaie d'utiliser cette police dans matplotlib, je vois cette erreur: error message

J'ai essayé d'ajouter

RUN rm -fr ~/.cache/matplotlib

à mon Dockerfile (après la partie ci-dessus) depuis que j'ai lu en ligne qui pourrait résoudre le problème. Ça n'a pas marché non plus.

De plus, si je navigue vers /usr/local/share/fonts, la police est là comme prévu.

Des idées pour résoudre ça?

4
mcansado

J'ai eu un problème similaire avec l'utilisation de polices personnalisées à partir d'un service Java exécuté dans un conteneur Docker. Fondamentalement, il existe deux façons de configurer les choses:

  1. Mettez des polices sur l'image lors de sa construction,
  2. Attachez un volume avec des polices lors du démarrage du conteneur;

Le premier est utile si vous prévoyez de réutiliser le conteneur pour différentes applications qui nécessitent des polices. Pour ce dernier, vous pouvez préparer l'environnement une fois (par exemple, test ou prod), puis partager les polices sur différents conteneurs Docker (même ceux de tiers) sans avoir besoin de les reconstruire.

Voici un exemple de préparation de l’env puis d’attacher des polices ad hoc:

$ 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

Assurez-vous de l'avoir mis à jour avec les noms pertinents pour votre cas.

Il y a plus de détails décrits dans cet article .

1
Vladimir Salin

J'étais dans la même situation que toi auparavant.

Voici mon fichier Docker. J'espère que cela peut vous aider.

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

Cela fonctionne dans mon cas.

1
the1900