Dockerコンテナで構築したDebianの環境に、日本語フォントをインストールする方法についてメモします。基本的にはコンテナ上で日本語を使うことってあまりないような気もしますが、matplotlibで日本語項目や日本語のデータを表示する際には日本語フォントが必要になるので。
FROM python:3.8-buster
ENV ACCEPT_EULA=Y
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update \
&& apt-get install -y g++ \
apt-utils \
apt-transport-https \
gcc \
build-essential \
unixodbc \
unixodbc-dev \
msodbcsql17 \
mssql-tools \
locales \
fonts-takao-gothic \
&& apt-get upgrade -y \
&& apt-get clean \
&& sed -i -E 's/(CipherString\s*=\s*DEFAULT@SECLEVEL=)2/\11/' /etc/ssl/openssl.cnf \
&& pip install --upgrade pip \
&& pip install --no-cache-dir \
autopep8 \
flake8 \
&& rm -rf /var/lib/apt/lists/*
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
RUN /bin/bash -c "source ~/.bashrc"
RUN locale-gen ja_JP.UTF-8
RUN localedef -f UTF-8 -i ja_JP ja_JP
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:jp
ENV LC_ALL ja_JP.UTF-8
ADD . /home/workdir
WORKDIR /home/workdir
COPY ./requirements.txt ${PWD}
RUN pip install -r requirements.txt
WORKDIR /home/workdir/src
EXPOSE 8888
上記のDockerfileはpyodbc用の設定などがごちゃごちゃ書いてありますが、日本語フォントについて重要なのは「fonts-takao-gothic」の部分です。TakaoフォントというのはIPAフォントの派生版です。ゴシックだけでなく明朝体(fonts-takao-mincho)も存在します。上記Dockerfileではゴシックだけインストールしていましたが、ゴシックと一緒に明朝体をインストールしてももちろん問題ありません。
RUN locale-gen ja_JP.UTF-8
RUN localedef -f UTF-8 -i ja_JP ja_JP
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:jp
ENV LC_ALL ja_JP.UTF-8
部分のロケール設定は正直いらないかもしれません。どっちかっていうと、普段のコマンドラインで日本語が使えるようになる、くらいなので。matplotlibには直接関係しない・・・はず。
import matplotlib
font = {'family':'TakaoPGothic'}
matplotlib.rc('font', **font)
ちなみに、日本語を含むようなグラフの出力には、上記の設定で日本語フォントを設定する必要があります。