【Dockerでデータサイエンス環境構築】PythonもRもJuliaもJupyterLabで使えるようにする

プログラミング
LINEで送る
Pocket

はじめに

こんにちは!

せっかくDockerを学んだので、Dockerを使ってデータサイエンス環境を構築したいと考えました。欲張りなので、JupyterLabでPythonやRやJuliaが使えるようにして、jupytextもインストールしています。(ちなみにまだRとPythonしか使えません・・・Juliaは学習予定!)

jupytextは「Jupyter notebookを管理しやすくするJupytextを使ってみた」が詳しく、この記事によると

Jupyter notebook をより便利にするツールです。
Jupytext は、上記の解決を目指したツールで、具体的には次のようなことが出来ます。

  • .ipynb ファイル作成時、同時に .py ファイルも作成される
  • 普段使っているエディタで .py ファイルを編集することで、.ipynb ファイルのセルを修正できる(逆も可)
  • .ipynb の差分を通常の python スクリプトとして見やすい形で git に取り込める
  • つまり git でマージもしやすい

となっており、gitの管理がしやすくなっていたり、他のIDEでも楽に使いやすくなるという素晴らしいツールです。

ただ今回jupytext自体の細かい説明はせず、jupytextをインストールした状態の環境構築について書きます。jupytext自体についてはまたいつか…

では、実際に環境構築していきましょう。

必要なファイル、フォルダの作成

  • datascienceフォルダ(名前は何でもいいです。以下のファイルを格納します。)
    • Dockerfile
    • Docker-compose.yml
    • workフォルダ(名前は何でもいいですが、変更する場合はDocker-compose.yml内のvolumesを修正します。作成するコンテナとファイルを共有します。)

Dockerfileの作成

まずはDockerfileを作成します。 イメージはDockerHubから(jupyter/datascience-notebook)を取得します。
Jupyterのイメージは使う目的によって、様々なものがあり、JupyterのGithubから飛べるこのページに詳細があります。今回はPythonもRもJuliaも使いたいので、jupyter/datascience-notebookを使用します。

FROM jupyter/datascience-notebook

USER root

# 必要なライブラリのインストール
RUN pip install --upgrade ipython beautifulsoup4 lxml html5lib seaborn jupytext

# 黒色の背景設定を追加
RUN mkdir -p /home/jovyan/.jupyter/lab/user-settings/@jupyterlab/apputils-extension
RUN echo '{"theme":"JupyterLab Dark"}' > \
  /home/jovyan/.jupyter/lab/user-settings/@jupyterlab/apputils-extension/themes.jupyterlab-settings

RUN echo 'c.ContentsManager.default_jupytext_formats = "ipynb,py"' >> \
  /home/jovyan/.jupyter/jupyter_notebook_config.py

# notebooksdディレクトリの作成
RUN mkdir /home/jovyan/notebooks
RUN chown jovyan:users /home/jovyan/notebooks

USER jovyan
WORKDIR /home/jovyan

必要なライブラリのインストールの部分には適宜自分が必要なライブラリを入れると良いと思います。

Docker-compose.ymlの作成

コンテナを起動するときに、毎回オプションを入れるのが面倒くさいのと忘れてしまうのとが嫌で、Docker-composeを使用しました。

version: "3"
services:
  jupyterlab:
    build: .
    # ポートの設定("ホスト:コンテナ")
    ports:
      - "8888:8888"
    # 環境変数の設定
    environment:
      GRANT_SUDO: "yes"
    # ボリューム(データの永続化の場所)の設定(ホスト:コンテナ)
    # ホスト内のworkディレクトリとコンテナ内の/home/jovyan/notebooks:zディレクトリが紐づいているイメージ
    volumes:
      - ./work:/home/jovyan/notebooks:z
    # 最後にjupyterLabに接続するためのコマンドを実行する。
    command: start.sh jupyter lab --NotebookApp.token='' --NotebookApp.contents_manager_class='jupytext.TextFileContentsManager'

ローカルで実行する予定なのでtokenを入力しないで良いように--NotebookApp.token=''をcommandに入力しています。

コンテナの起動

以上のファイルやディレクトリが作成できたら、Docker-composeからupします。

docker-compose up -d

コンテナが立ち上がったら、ブラウザでhttp://localhost.8888にアクセスし、JupyterLabが起動すれば完了です。
あとはデータサイエンスを楽しみましょう!

まとめ

今回、Dockerを使用してPythonもRもJuliaも使用できるJupyterLabでの環境構築を行いました。

ぶっちゃけインストールするライブラリがなければ、Docker-compose.ymlだけでも環境構築が可能です。これは【Docker】3分でjupyterLab(python)環境を作る!に詳しくあります。

色々いじって自分なりの環境構築を行いましょう。

今回参考にさせていただいたサイト、ページ

Jupyter notebook を管理しやすくする Jupytext を使ってみた
【Docker】3分でjupyterLab(python)環境を作る!
ローカル実行用のJupyterNotebook環境を整える

LINEで送る
Pocket

コメント

  1. […] 以前紹介した、Dockerを使用したデータサイエンス環境でも問題なく使用することができました。 […]

  2. […] こんにちは。 以前、Jupyter Notebookを利用してPythonもRもJuliaも使えるようにしたのですが、やっぱりRを使うのはRStudioがいいよなーとなってしまったので、Dockerを利用してRStudioの環境を構 […]

タイトルとURLをコピーしました