Jupyter Notebook で Python を書くためのコンテナ開発環境を作成する

この記事は個人ブログと同じ内容です

www.ritolab.com


Python を使ったデータ分析や視覚化を気軽に試せるように、コンテナを使ってローカル開発環境を構築してみます。

Jupyter Notebook

Jupyter Notebook は、ブラウザ上で Python を記述して実行することができる web ベースの開発環境です。(言語については Python に限らない)

jupyter.org

開発環境

コンテナで環境を作成するので、Docker が入っている前提です。

  • Docker for Mac 4.1.0
    • Docker 20.10.8
    • Compose 1.29.2

また、最終的なディレクトリ・ファイル構成は以下になります。

.
├── Dockerfile
├── config
│   └── matplotlibrc
└─── docker-compose.yml

これから上記 3 つのファイルを作成していきます。

Dockerfile

まずは Dockerfile を作成してイメージを定義します。

Dockerfile

FROM python:3.9.7-buster

RUN apt-get update
RUN apt install -y locales && localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9

# 日本語 font のインストール
RUN apt-get install -y fonts-noto-cjk

# python ライブラリのインストール
RUN python -m pip install pandas
RUN python -m pip install numpy
RUN python -m pip install matplotlib
RUN python -m pip install jupyterlab
RUN python -m pip install notebook
  • Jupyter Notebook を日本語で使いたいので、locales を入れて言語の設定を行なっています。
  • グラフ描画の際に、タイトルや凡例を日本語で表示させたいので、日本語のフォントをインストールしています。
  • 最後に記述されている Python ライブラリのインストールは、必要最低限だけ記述してあります。

なお、私は DebianPython に関しては弱者なのでイメージに buster を選択しています。この辺に詳しい場合は、適宜最適なイメージを指定すると良いと思います。

docker-compose.yml

次に、docker-compose.yml を作成します。

docker-compose.yml

version: '3'
services:
  python3:
    build: .
    container_name: python3
    working_dir: /root/opt
    tty: true
    volumes:
      - ./src:/root/opt
      - ./config:/root/.config/matplotlib
    ports:
      - "8888:8888"

volumes には、以下の 2 つを指定しつなげています。

  • Jupyter Notebook で作成したファイルや、分析で使うデータを設置するための src ディレクト
  • matplotlib の設定ファイルを設置するディレクト

グラフの日本語化

解析結果をチャートに描画する際に、タイトルや凡例などに日本語を使いたい場合はデフォルトのフォントだと日本語が無く文字化けしてしまいます。 イメージ作成の際に日本語フォントをインストールしたので、それを設定ファイルに指定して、日本語が表示されるようにしてやります。

config/matplotlibrc

font.family:  Noto Sans CJK JP

動作確認

設定が終わったので、以下のコマンドを順に流してコンテナを作成します。

# 1. イメージ作成
docker compose build

# 2. コンテナ起動
docker compose up -d

コンテナが起動したら、以下のコマンドで Jupyter Notebook を起動します。

# Jupyter Notebook 起動
docker compose exec python3 jupyter notebook --allow-root --ip=0.0.0.0

コマンドを実行すると、以下のように URL が出力されます。

f:id:ro9rito:20211011175416p:plain

出力された URL にアクセスすれば、Jupyter Notebook を使い始めることができます。

f:id:ro9rito:20211011175434p:plain

まとめ

データを統計解析してみたりそれをグラフなどで視覚化してみようと思った時に、ローカル環境でその全てを実現しようとすると Python 初心者にはなかなか難しいですが、Jupyter Notebook の環境を作れば簡単にその両方を叶えられるので、統計を学習したりする場合には手早くできてとても便利なのでオススメです。