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

在Ubuntu 20.04的Docker容器中运行Python程序,如何在宿主机指定目录创建文件?

解决Docker容器生成文件无法同步到宿主机的问题

排查方向与修复步骤

1. 确认Docker容器的工作目录

你的Python代码用相对路径创建文件,文件会生成在容器的当前工作目录。如果Dockerfile未指定工作目录,容器默认的工作目录可能不是/app。

在Dockerfile中添加以下指令,确保容器启动后工作目录为挂载的/app:

WORKDIR /app

2. 替换$PWD为绝对路径

$PWD的值取决于运行start.sh脚本时的当前目录,若脚本不是从/var/www/my_app_name/目录启动,挂载路径会出错。直接用绝对路径替换$PWD,确保挂载目标准确:

docker run -d --name=${app} -v /var/www/my_app_name:/app ${app}

3. 解决文件权限问题

容器内的运行用户可能没有宿主机目录的写入权限,导致文件无法生成。可通过以下两种方式处理:

  • 指定宿主机用户运行容器
    在docker run命令中添加--user参数,使用当前宿主机用户的UID和GID:
    docker run -d --name=${app} --user $(id -u):$(id -g) -v /var/www/my_app_name:/app ${app}
    
  • 调整宿主机目录权限
    给目标目录添加可写权限(适合测试环境):
    sudo chmod 777 /var/www/my_app_name
    

4. 验证文件生成路径

进入容器查看文件实际生成位置,确认是否在挂载目录:

docker exec -it ${app} /bin/bash
# 进入容器后执行以下命令查找文件
find / -name "my_text_file.txt"

如果文件不在/app目录,说明Python代码路径或容器工作目录设置有误,可将代码改为绝对路径:

text_file = open("/app/my_text_file.txt", "wt")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:25:19