LoginSignup
9
6

More than 3 years have passed since last update.

Docker環境のPythonで日本語を使用できるように

Posted at

環境

OS:Windows10 Home 1909
Docker:Docker Toolbox
Docker バージョン:19.03.12

注意点

恥ずかしながらDockerをJupyter環境整備で初めて使用して、Dockerについてあまり知りませんでした。自戒の念も込めて記載しておきます。※ docker-compose.ymlを使用

Docker imageはDockerfileを基に構築されます。Docker imageを一度buildした際はキャッシュが作成されます。キャッシュとは簡単に言えば、2回目以降の読込を高速化するものです。このキャッシュがあると、buildの際に優先的に用いられてしまいます。そのため、Dockerfileを更新した際はdocker-compose build --no-cacheでキャッシュを使用しないbuildをしましょう。

キャッシュを使用しないbuildですので、ものによってはかなり時間が掛かることもありますので、ご注意ください。

Dockerfile

FROM jupyter/datascience-notebook
RUN pip install --upgrade pip
RUN pip install jupyterlab
RUN jupyter serverextension enable --py jupyterlab

RUN curl -L  "https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00401.zip" > font.zip
RUN unzip font.zip
RUN cp IPAexfont00401/ipaexg.ttf /opt/conda/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf/ipaexg.ttf
RUN echo "font.family : IPAexGothic" >>  /opt/conda/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc
RUN rm -r ./.cache

使用方法

Windows環境では、Docker Quickstart Terminalで実行してください。

Dockerfileに記載してあるDockerfileとDockerfileに対応したdocker-compose.ymlがあるディレクトリにcdで移動し、下記コマンドを実行します(注意点もご確認ください)。

docker-compose build
docker-compose up -d

docker-compose.ymlでtoken値を設定していない(空値は「設定している」とします)場合は、TerminalにURLが出力されていると思います(e.g. http://127.0.0.1:8888/?token=... )。そのtoken値も含めて任意のブラウザでアクセスすればJupyterが使えるようになっているハズです。

※ token値を空値で設定してある場合は、http://192.168.99.100:8888 (windows) でアクセスできます。macは http://localhost:8888

確認方法

Jupyterが使用できたら、下記をPythonで実行します。

import matplotlib
import matplotlib.pyplot as plt
plt.figure()
plt.title('あ - A')
plt.ylabel('い - i')
plt.xlabel('う - Uu')

その結果、下の画像のように出力されていれば日本語が使えるようになっています!
日本語グラフ.png
お疲れさまでした!

おわりに

Anaconda環境から卒業して、ついにDocker環境に移行するぞ!と意気込んだのはよかったものの、Dockerは初めてで、データ分析系統の知識しかなかったのでIT知識は詳しくなく、何度も躓きました。実はこの日本語を使えるようにするのも1度諦めました。

また、最近の記事はmac環境ばかりでwindows環境の記事を探すのも一苦労です。ただそのwindows環境の記事も時間経過で環境が変わり、そのままのコードを打ち込んでも動いてくれないこともままあります。それらのコードを改良するのも楽しいですが、初学者のときは難しいですね...。

参考記事

  1. JupyterのDockerイメージで日本語が使えるように、Dockerfileを書いた
  2. docker-compose 'up' とか 'build' とか 'start' とかの違いを理解できていなかったのでまとめてみた
9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6