UNRAID 上部署多个 Streamlit 应用
✅ 部署多个 Streamlit 实例的关键点
项目 | 要做的事情 | 示例(第二个实例) |
---|---|---|
📁 应用目录 | 每个应用要有独立的目录 | /mnt/user/appdata/streamlit_app2/ |
📄 app.py 内容 | 每个项目的代码可以不同(也可相同) | streamlit_app2/app.py |
📦 Docker 镜像名 | 建议为不同名称,但可复用同一镜像 | streamlit-app (可共用) |
🐳 容器名称 | 必须唯一 | --name streamlit-demo2 |
🌐 对外端口 | 必须不重复 | -p 8502:8501 (容器内部都是 8501) |
🧱 示例:部署第二个 Streamlit 应用
1. 复制第一套项目目录
bashCopyEditcp -r /mnt/user/appdata/streamlit_demo /mnt/user/appdata/streamlit_app2
或者自己创建一个新的目录,放入新的 app.py
、requirements.txt
等。
2. 构建(可复用已有镜像)
如果内容差不多,可以直接用已有镜像 streamlit-app
,无需重建。
3. 运行新容器(改端口和容器名)
bashCopyEditdocker run -d \ --name streamlit-demo2 \ -p 8502:8501 \ -v /mnt/user/appdata/streamlit_app2:/app \ streamlit-app
4. 访问方式
打开浏览器访问:
cppCopyEdithttp://[UNRAID IP]:8502
🚀 可选:多个 docker-compose.yml
管理多个实例
你也可以使用多个 docker-compose.yml
文件,例如放在不同目录内分别管理:
swiftCopyEdit/mnt/user/appdata/streamlit_demo/docker-compose.yml/mnt/user/appdata/streamlit_app2/docker-compose.yml
然后分别运行:
bashCopyEditdocker-compose up -d
✅ 总结
| 可以共享镜像 | ✅ 是的(streamlit-app
可通用) |
| 需要独立容器和端口 | ✅ 每个容器用不同的 --name
和 -p
映射端口 |
| 可同时运行多个? | ✅ 完全可以,同时访问不同端口即可 |
| 适合什么场景? | 多个项目演示、模块独立部署、团队协作开发等 |