ゴール
目標は上のようなノートが作れるようになることです。上のファイルはnote/test.ipynb
に置いていて
docker run -d -p 8888:8888 -v `pwd`:/home/jovyan/work nnabeyang/jupyter-notebook start-notebook.sh --NotebookApp.token=''
でサーバーを起動したときに、db/development.sqlite3
を参照してくれます。
.
├── Gemfile
├── app
├── bin
├── config.ru
├── db
│ ├── development.sqlite3
│ ├── migrate
│ ├── seeds.rb
│ ├── structure.sql
│ └── test.sqlite3
├── note
│ └── test.ipynb
│
...
環境構築
まずdockerを使って、公開されているjupyter-notebookのイメージを取ります。
railsアプリのルート位置にいるとして、次のコマンドを実行すると、イメージを取り、サーバーを起動するところまでしてくれます。
$ docker run -d -p 8888:8888 -v ~/rails_tutorial/money_log:/home/jovyan/work jupyter/datascience-notebook start-notebook.sh --NotebookApp.token=''
ここの作業は時間がかかりますが、終わったらhttp://localhost:8888
にアクセスします。このままでは'%%sql'を書いてもSQLを実行することができませんので、ipython-sql
をインストールします。jupyter-notebook
のページにある新規作成用のボタンを押すと、以下のようにTerminal
が表示されるので、そこをクリックします。
すると、ターミナルが開くので、pip3 install ipython-sql
を実行します。
インストールし終えたらこれで、note/test.ipynb
はSQL文を実行できるようになっているはずです。
あとは、このdockerイメージを今後も使えるようにしておけば目標達成です。まず今起動しているdockerのコンテナIDをdocker ps
して調べます(ここではコンテナIDがafc4c5294130
だったとしましょう)。それを次のようにして後で参照しやすいようにしておきます。
$ docker commit afc4c5294130 nnabeyang/jupyter-notebook:170530
$ docker tag nnabeyang/jupyter-notebook:170530 nnabeyang/jupyter-notebook:latest
(当然ですがnnabeyang/jupyter-notebook
などは適当に使いやすいように変更してください。)
今起動しているコンテナをdocker stop afc4c5294130
で止めてから、次のようにするとSQLが使えるjupyter-notebookが起動します。
docker run -d -p 8888:8888 -v `pwd`:/home/jovyan/work nnabeyang/jupyter-notebook start-notebook.sh --NotebookApp.token=''