【環境構築】dockerでjupyterlabの環境を構築する

背景

  • 機械学習をローカル環境のjupyterlabでしていると、ライブラリの依存関係がバグって昔作ったプログラムが動かなくなることがあった。
  • dockerで環境を明示的にして、作ったプログラムが動かなくなる事態を避けたい。
  • なんなら、githubとかにコード上げるときもdockerfileとセットで上げておいて「環境が違うから動かんやんけ。」って思われないリポジトリにしたい。

使用したファイルのgithub

GitHub - takuma-competition/docker_jupyterlab: dockerでjupyterlabを起動できるdockerfile
dockerでjupyterlabを起動できるdockerfile. Contribute to takuma-competition/docker_jupyterlab development by creating an account on GitHub.

目標

  • dockerで使用するライブラリも明示的に指定したjupyterlab環境を構築する。

前提

  • dockerを多少は使ったことがある。

環境

  • macOS 11.4 (20F71)
  • arm64(M1)

ファイル構成

.
├─ Dockerfile           #どんな「docker images」を作るのか記載された設計図みたいなファイル
├─ docker-compose.yml   #「docker container」の起動コマンドをまとめたファイル
├─ requirements.txt     #最初から入れておきたいライブラリを記載しておくファイル
└─ workdir              #「jupyterlab」を立ち上げるカレントディレクトリにするフォルダ(名前はなんでも良い)
      └ 作業で使用するファイル等

ファイルの中身

FROM python:3.9@sha256:f3ea0f7b3662c33b650f763a365b2c3e3c7695ab1658fd0987150708b1f5f0e6

COPY requirements.txt .

RUN pip3 install --upgrade pip && \
    pip3 install -r requirements.txt && \
    pip install jupyterlab

WORKDIR /workdir
version: '3'

services:
  jupyterlab:
    restart: always
    build:
      context: .
      dockerfile: Dockerfile
    container_name: jupyterlab
    working_dir: '/workdir'
    tty: true
    volumes:
      - ./workdir:/workdir
    ports:
      - 8080:8080
    command: jupyter-lab --ip 0.0.0.0 --port=8080 --allow-root --no-browser --NotebookApp.token=''
#今回はサンプルとしてnumpyとpandasだけにしている
#使いたいライブラリがあればここに記載しておこう
numpy
pandas

起動方法

  • dockerが起動している状態であれば、ファイルがあるカレントで下記コマンドを実行するだけ。
$docker-compose up --build
  • うまくいけば、jupyterlabが自動起動するので、http://127.0.0.1:8080/labにアクセスする。
  • これで、「requirements.txt」に明示的に指定したライブラリが入ったjupyter lab環境で作業ができる。

補足

  • 投稿者はdockerとか詳しくないので、間違ったことを書いてるかもしれないので悪しからず。

参考資料

  • 阿佐 志保,プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化,翔泳社,2018.


プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化【電子書籍】[ WINGSプロジェクト阿佐志保 ]

DockerでJupyterLab環境を作る - Qiita
DockerでPython実行環境を作ってみるを参考にDockerを色々といじってみたので記事にしました。この記事のゴールは拡張機能付きでJupyterLab環境を作るところまでです。ファイルの…
Dockerコンテナをずっと起動しておく - WEB開発ノート
TL;DR docker runでは-itオプションをつける docker-composeではyamlにtty: trueとstdin_open: trueを書く 処理が終わるとDockerコンテナは終了 Dockerコンテナを起動したままにするにはitオプション Docker Compose の場合は設定ファイルに書...

Qiita記事

【環境構築】dockerでjupyterlabの環境を構築する - Qiita
背景機械学習をローカル環境のjupyterlabでしていると、ライブラリの依存関係がバグって昔作ったプログラムが動かなくなることがあった。dockerで環境を明示的にして、作ったプログラムが動か…