使用Docker自动化编排Streamlit实现的仪表盘
这次的部署有两个目的,一是把服务器的快速启动仪表盘从vitepress pannel改到了streamlit,这样就可以更灵活地配置我的仪表盘,而不用再用Hexo式的修改后还得重新生成部署静态页面了。
第二个目的是重温一遍Dockerfile和Docker-compose的部署。一个一个打容器命令来执行未免有点太恐怖了对吧(
Streamlit 部署与故障排除手册
第一部分:项目概况与日常维护
这是我最常查看的部分。它定义了项目在哪里、怎么运行、如何更新。
1. 项目信息
- 宿主机路径:
/DATA/AppData/260412_Streamlit仪表盘 - 访问地址:
http://服务器IP:8501 - 核心逻辑:代码与环境被封装在 Docker 镜像中;配置文件
config.yaml挂载在宿主机,支持实时修改。
2. 我的“一键部署”流程
当我修改了 _start.py 或 requirements.txt 后:
- 打开 1Panel -> 容器 -> 编排。
- 找到该项目,点击 【创建编排】。
- 结果:Docker 会自动基于最新的
requirements.txt(利用缓存)重新打包镜像并重启容器。
3. 如何修改配置而不重新部署?
- 直接用编辑器修改宿主机的
/DATA/AppData/260412_Streamlit仪表盘/config.yaml。 - 生效方式:Streamlit 通常会自动感应变动。若未生效,在 1Panel 容器列表点击 **【确认】重新部署。
| 文件结构上看上去是这样 |
|---|
![]() |
第二部分:技术环境说明
记录我当初为了让项目跑通所做的设定。
1. 镜像构建与加速
- 基础镜像:
python:3.11-slim(轻量化版本)。 - Pip 加速:在
Dockerfile中我强制指定了 清华大学镜像源 (-i https://pypi.tuna.tsinghua.edu.cn/simple)。 - 依赖锁定:目前的
requirements.txt是我通过pip freeze录入的完整稳定版,不要轻易手动改动版本号。
2. 网络代理配置
若构建时出现 EOF 错误,说明 Docker 守护进程连不上官网。
- 配置位置:
/etc/systemd/system/docker.service.d/http-proxy.conf。 - 代理生效:修改后必须执行
sudo systemctl daemon-reload && sudo systemctl restart docker。
第三部分:故障排查与紧急修复
如果容器报错或无法启动,请按此顺序检查。
1. 脚本执行报错(常见于 Windows 编辑后)
- 现象:日志显示
exec ./entrypoint.sh: no such file or directory。 - 原因:文件结尾带有 Windows 换行符
\r。 - 修复:在项目目录下执行:
1
sed -i 's/\r$//' entrypoint.sh
2. 权限问题
- 现象:日志显示
Permission denied。 - 原因:
entrypoint.sh失去了执行权限。 - 修复:在宿主机执行: 编写建议:如果你以后增加了新的 Python 库,请务必在容器运行成功后再次执行:
1
chmod +x entrypoint.sh
sudo docker exec streamlit-app pip freeze > ./requirements.txt
以保持手册和环境同步。
- Title: 使用Docker自动化编排Streamlit实现的仪表盘
- Author: MagicNue
- Created at : 2026-04-12 00:00:00
- Updated at : 2026-04-12 11:06:42
- Link: https://magicnue.top/posts/记录/使用Docker自动化编排Streamlit实现的仪表盘/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments
