Streamlitを表示させながらJupyterLabでコードを書きたいと思い、
Dockerで環境を作成しました。
前提の話はこちらの記事で書いています。
基本的には上記の内容とほぼ変わらないですが、
docker-compose.ymlでimageを2つ作成している点がことなります。
フォルダ構成
Dockerfile
docker-compose.yml
requirements.txt
src
└ app.py
Dockerfile
FROM python:3
COPY requirements.txt .
RUN pip3 install --upgrade pip && \
pip3 install --no-cache-dir -r requirements.txt && \
pip3 install jupyterlab
WORKDIR /src
COPY /src /src
requirements.txt
streamlit
pandas
app.py
最初は空でも問題ないです。
import streamlit as st
st.write('Hello Streamlit')
docker-compose.yml
version: '3'
services:
jupyterlab:
restart: always
build:
context: .
dockerfile: Dockerfile
container_name: jupyterlab
working_dir: '/src'
tty: true
volumes:
- ./src:/src
ports:
- '8080:8080'
command: jupyter-lab --ip 0.0.0.0 --port=8080 --allow-root --no-browser --NotebookApp.token=''
stremlit:
restart: always
build:
context: .
dockerfile: Dockerfile
container_name: stremlit
working_dir: '/src'
tty: true
volumes:
- ./src:/src
ports:
- '8501:8501'
command: streamlit run app.py
jupyterlabの方は--NotebookApp.token=''
オプションを追加してトークンの入力なしで開けるようにしました。
streamlitではworkind_dir
で指定したフォルダにapp.py
があることが重要です。
これらを用意してdockerコマンドを実行
docker compose up
localhost:8080
でJupyterLab
localhost:8501
でStreamlitが表示されます。
JupyterLabの拡張機能を入れるとimageの作成に時間がかかるので
省略していますが、実際には入れて環境構築します。
その話はこちらの記事でまとめています。