You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Streamlit应用调用Docker镜像时无法写入磁盘的问题求助

解决Docker镜像无法写入磁盘的问题

你的问题核心是在Python脚本中调用Docker镜像时没有配置卷挂载,导致容器生成的results.csv只存在于容器内部,本地无法读取,且容器退出后文件会被删除。控制台命令里的-v参数负责将本地目录和容器目录绑定,这一步在脚本里缺失了。

修改后的代码

在docker.run()中添加卷挂载参数,对应控制台的-v配置:

import streamlit as st
import pandas as pd
import numpy as np
from python_on_whales import docker

def main():
    search = st.text_input('Enter search words:')
    # 定义本地路径和容器内映射路径
    local_path = r"C:\Users\s.woo\Documents\search_app\docker\search-engine"
    container_path = "/home"
    
    if st.button('Search'):
        st.write('Results:')    
        # 运行Docker镜像并挂载卷
        docker.run(
            "search_app_image",
            volumes={local_path: {"bind": container_path, "mode": "rw"}}
        )
        # 读取本地目录下的results.csv(注意路径要和挂载的本地目录对应)
        df = pd.read_csv(f"{local_path}/results.csv")
        st.table(df)  

关键说明

  • volumes参数使用字典格式,local_path是你本地要挂载的目录,bind指定容器内对应的目录,mode: "rw"表示读写权限,确保容器能写入文件到本地目录。
  • 读取results.csv时,要指向本地挂载的目录,而不是脚本当前目录,因为容器是将文件写到挂载的本地路径里。
  • 确保本地目录C:\Users\s.woo\Documents\search_app\docker\search-engine已经存在,且运行Streamlit的用户有该目录的读写权限。

内容的提问来源于stack exchange,提问作者keeran_q789

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:55:21