docker composeでサクッとjupyter環境構築
サクッと開発用にdockerでjupyterlab環境を構築するメモ
ディレクトリ構成
ディレクトリ構成は以下の通りとする。
.
docker-compose.yml
# ビルド関連のファイル用ディレクトリ
docker/
- jupyter/
- Dockerfile
# データ永続化用のディレクトリ
data/
- jupyter/
- work/
Docker Image
普段pythonの動作環境のために使用するイメージはminicondaの公式イメージを使用することが多いが、今回はデータ分析/機械学習用の環境構築用のためJupyter Docker Stacksのイメージを使用する。
Hadoop、Apache Sparkの利用を視野に入れているため、pyspark-notebookを使う。
各イメージについては以下を参照
https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html#image-relationships
Dockerfile
取り敢えずシンプルに作成
ビルド時にcondaのアップデートを行うように記述。
追加でライブラリを追加する場合はconda installコマンドをRUNで記述する。
FROM jupyter/pyspark-notebook
RUN conda update -n base -c defaults conda
# RUN conda install -c conda-forge <ライブラリ名>
docker-compose.yml
単純にコンテナを起動するだけの記述。
ログは適当。
version: '3.8'
services:
jupyter:
container_name: jupyter
build: ./docker/jupyter
ports:
- "8888:8888"
tty: true
volumes:
- ./data/jupyter/work:/home/jovyan/work
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "1"
コンテナ起動とアクセス
# コンテナ起動
$ docker compose up -d
# コンテナ確認
$ docker compose ps
NAME COMMAND SERVICE STATUS PORTS
jupyter "tini -g -- start-no…" jupyter running (healthy) 0.0.0.0:8888->8888/tcp, :::8888->8888/tcp
# tokenの確認
$ docker compose logs jupyter
ブラウザで http://localhost:8888 にアクセスし、docker compose logs で確認したtokenを入力すればアクセス出来る。
workディレクトリ配下に保存しないと永続化されないため注意。