- 参考:
docker-ml
│──Dockerfile # pyproject.toml で定義した各パッケージを自動でインストールするようにしたDockerfile
│──pyproject.toml # poetryでパッケージ依存を管理。使ってるpoetry環境のpyproject.tomlに置き換えたらいい
│──prepare_poetry
│──Dockerfile_poetry # poetryをinstallするだけのDockerfile
│──※環境構築コマンド履歴.txt # Dockerでpyproject.toml作る手順とかのメモ
│──docker-ml
│──tests # テストコード
│──main.py # サンプル機械学習ソースコード(sklearn)
│──model # モデル保存用フォルダ
└──run_model.sh # main.py実行するシェルスクリプト
│──my_package # パッケージ化したいモジュール
├──notebook # EDAで使用するnotebook
├──streamlit_app # streamlitのapp
- wsl2のコマンドプロンプト起動
$ cd ./docker_ml/prepare_poetry
# イメージ作成(pyproject.tomlを作るためだけのpoetryというDockerイメージ作成)
$ docker build -t poetry -f Dockerfile_poetry .
# コンテナ起動
$ docker run -it -v $PWD:/workdir --rm poetry /bin/bash
# カレントディレクトリのpyproject.tomlから必要なパッケージをインストール
$ poetry install # 1からpyproject.toml を作る場合は$ poetry init
# pyproject.tomlに任意のパッケージ追加
$ poetry add <opencv-python-headless とか>
# コンテナから出る(--rm オプション付けて起動してるので、出たらコンテナ削除される)
$ exit
-
wsl2のコマンドプロンプト起動
※作成したpyproject.toml を./docker_ml に置いておくこと!!!
$ cd ./docker_ml
# イメージ作成(docker_mlというDockerイメージ作成. pyproject.tomlのパッケージをpipでinstallする)
$ docker build -t docker_ml -f Dockerfile .
# コンテナ起動
$ docker run -p 8889:8889 -p 8502:8502 -it -v $PWD/docker_ml:/docker_ml --rm docker_ml /bin/bash
# テストコード置いてるディレクトリに移動してモデル学習予測実行
$ cd tests/
$ ./run_model.sh
# http://localhost:8502/ からstreamlit起動確認
$ cd ..
$ streamlit run streamlit_app/app.py --server.port 8502
# http://localhost:8889/ からjupyter起動確認
$ jupyter lab --ip=0.0.0.0 --allow-root --no-browser --NotebookApp.token='' --port=8889
=> notebook/test.ipynb 実行(mlflowのファイル出力)
# http://localhost:8502/ からmlflow起動確認
$ cd notebook/
$ mlflow ui --port 8502 --host 0.0.0.0
# コンテナから出る(--rm オプション付けて起動してるので、出たらコンテナ削除される)
$ exit
※wsl2+Dockerはめちゃめちゃメモリを食うので微妙かも…
- VS Codeの左下の「><」で「WSL: Ubuntu」選択(wsl2のもの選ぶ)
- VS Codeの上部のメニューからターミナル開く
- ディレクトリ移動 cd /mnt/c/Users/81908/MyGitHub/docker_ml/docker_ml
- VS Code左下の「><」をクリック
- Reopen in Container を選択
- From Dockerfile を選択
- 左下が「Dev Container: Existing Dockerfile」になったら接続成功