背景
- 機械学習をローカル環境のjupyterlabでしていると、ライブラリの依存関係がバグって昔作ったプログラムが動かなくなることがあった。
- dockerで環境を明示的にして、作ったプログラムが動かなくなる事態を避けたい。
- なんなら、githubとかにコード上げるときもdockerfileとセットで上げておいて「環境が違うから動かんやんけ。」って思われないリポジトリにしたい。
使用したファイルのgithub
目標
- dockerで使用するライブラリも明示的に指定したjupyterlab環境を構築する。
前提
- dockerを多少は使ったことがある。
環境
- macOS 11.4 (20F71)
- arm64(M1)
ファイル構成
.
├─ Dockerfile #どんな「docker images」を作るのか記載された設計図みたいなファイル
├─ docker-compose.yml #「docker container」の起動コマンドをまとめたファイル
├─ requirements.txt #最初から入れておきたいライブラリを記載しておくファイル
└─ workdir #「jupyterlab」を立ち上げるカレントディレクトリにするフォルダ(名前はなんでも良い)
└ 作業で使用するファイルとか
ファイルの中身
Dockerfile
FROM python:3.9@sha256:f3ea0f7b3662c33b650f763a365b2c3e3c7695ab1658fd0987150708b1f5f0e6
COPY requirements.txt .
RUN pip3 install --upgrade pip && \
pip3 install -r requirements.txt && \
pip install jupyterlab
WORKDIR /workdir
docker-compose.yml
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=''
requirements.txt
#今回はサンプルとして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.
個人ブログ