これまでデータ分析の環境構築の際は、Anacondaで仮想環境を構築してpip install
とかをしていた。ただこの場合、メモを残しておいたりしない限りは同じ環境を構築できなかったりするので、最近はDockerを使用するようになってきた。
基本的には、Jupyter公式のDocker Hubからdocker imageをpullし、必要なものを足していくという感じで環境構築している。(同じように環境構築している人が多い?)
ここで、環境構築時にJupyter Labのショートカットキーの作成も一緒にしてくれると嬉しいと思ったので、そのためのDockerfileの書き方を紹介する。
まだまだDockerについての理解が浅いので間違っていたりしたら指摘してくださるとありがたい。
また、簡単なデモが出来るようにGitHubにDockerfileなどをあげておいた。dockerを使用したことがある人なら、Dockerfileを読めばすぐに分かるはず。
設定方法
まず試したこと
単純にjupyterから引っ張ってきたimageからコンテナを作成すると、~/.jupyter/lab/
の下にはworkspaces/
があるだけ。
そこで、コンテナ上でJupyter LabのGUIからSettings -> Advanced Settings Editor -> Notebook -> User Preferences
に設定を記述すると、~/.jupyter/lab/user-settings/@jupyterlab/
以下に新しくディレクトリとファイルができていることが確認できる。
つまりやることは、docker imageを作成するときに、新しく同じようなディレクトリを作成し、設定ファイルをそのディレクトリに置くだけ。
Dockerfile
Dockerfileは以下のように書くことができる。
Dockerfileと同じディレクトリ内に設定用ファイルを置いておけば、それをCOPYするだけで済む。
# pull docker image
FROM jupyter/datascience-notebook
# make directory
RUN mkdir -p .jupyter/lab/user-settings/@jupyterlab/notebook-extension/ \
&& mkdir -p .jupyter/lab/user-settings/@jupyterlab/shortcuts-extension/
# copy setting files
COPY tracker.jupyterlab-settings .jupyter/lab/user-settings/@jupyterlab/notebook-extension/
COPY shortcuts.jupyterlab-settings .jupyter/lab/user-settings/@jupyterlab/shortcuts-extension/
...
このDockerfileからdocker imageをビルドしてcontainerを作成すると、既にカスタム設定が適用されたJupyter Labを確認できる。
設定ファイルについて
tracker.jupyterlab-setting
はNotebookの行数を表示する設定で以下のような内容。
{
"codeCellConfig":{
"lineNumbers": true,
},
}
shortcuts.jupyterlab-settings
は、セルを上下させるショートカットキーの設定をしている。ショートカットキーの設定についてはこちらを参考に。
{
"shortcuts": [
{
"command": "notebook:move-cell-up",
"keys": [
"Ctrl Shift K"
],
"selector": ".jp-Notebook:focus"
},
{
"command": "notebook:move-cell-down",
"keys": [
"Ctrl Shift J"
],
"selector": ".jp-Notebook:focus"
},
]
}