使用Docker自动化编排Streamlit实现的仪表盘

使用Docker自动化编排Streamlit实现的仪表盘

MagicNue

这次的部署有两个目的,一是把服务器的快速启动仪表盘从vitepress pannel改到了streamlit,这样就可以更灵活地配置我的仪表盘,而不用再用Hexo式的修改后还得重新生成部署静态页面了。
第二个目的是重温一遍Dockerfile和Docker-compose的部署。一个一个打容器命令来执行未免有点太恐怖了对吧(


Streamlit 部署与故障排除手册

第一部分:项目概况与日常维护

这是我最常查看的部分。它定义了项目在哪里、怎么运行、如何更新。

1. 项目信息

  • 宿主机路径/DATA/AppData/260412_Streamlit仪表盘
  • 访问地址http://服务器IP:8501
  • 核心逻辑:代码与环境被封装在 Docker 镜像中;配置文件 config.yaml 挂载在宿主机,支持实时修改。

2. 我的“一键部署”流程

当我修改了 _start.pyrequirements.txt 后:

  1. 打开 1Panel -> 容器 -> 编排
  2. 找到该项目,点击 【创建编排】
  3. 结果:Docker 会自动基于最新的 requirements.txt(利用缓存)重新打包镜像并重启容器。

3. 如何修改配置而不重新部署?

  1. 直接用编辑器修改宿主机的 /DATA/AppData/260412_Streamlit仪表盘/config.yaml
  2. 生效方式: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 失去了执行权限。
  • 修复:在宿主机执行:
    1
    chmod +x entrypoint.sh
    编写建议:如果你以后增加了新的 Python 库,请务必在容器运行成功后再次执行:
    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