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ディレクトリ配下に保存しないと永続化されないため注意。

いいなと思ったら応援しよう!