用容器来运行streamlit
一开始玩这个的时候就在想用docker跑,因为实在不想在本机里搭各种乱七八糟的环境,也懒得用Anaconda那样的中间环境,总感觉本地跑个模型才用得上那种大玩意儿,于是在dockerhub上找了找
一些已有的可用镜像:
https://hub.docker.com/r/aminehy/docker-streamlit-app
https://hub.docker.com/r/samdobson/streamlit
就是镜像build都好几年前了,实测目前有些新的例程都跑不了,还是自己做个镜像吧
制作dockerfile
https://docs.streamlit.io/deploy/tutorials/docker
好在官网已给出方案
这是我微改后的:
1 | # app/Dockerfile |
主要就最后一行并没有用ENTRYPOINT
,因为记得这个不是必须,用CMD
的好处是非常方便的就能修改docker run
时要运行的内容
构建和使用镜像
打开CMD,CD到这个Dockerfile保存的目录下docker build -t streamlit_winotmk:latest .
点不要落下
然后就可用来运行任意py的app文件了docker run -ti --rm -p 8501:8501 -v $(pwd):/app streamlit_winotmk:latest streamlit run name_main_file.py
$(pwd)
换成宿主机的目录,记得暴露8501的默认端口
我这里目录是C:\Cloud\docker\streamlit\demo3\examples
所以直接:docker run -ti --rm -p 8501:8501 -v C:\Cloud\docker\streamlit\demo3\examples:/app streamlit_winotmk:latest streamlit run intro.py
保持运行并想下次继续用可以docker run -ti -d -p 8501:8501 -v $(pwd):/app --name MystreamlitAPP streamlit_winotmk:latest
*用容器跑起来的一些例程APP: