Docker中Python无法读取绑定挂载(bind mounted)文件的问题求助
Docker中Python无法读取绑定挂载(bind mounted)文件的问题求助
大家好,我遇到了一个头疼的问题:我的Python代码在Windows本地运行完全正常,但放到Docker容器里就会抛出找不到文件的异常,明明在Docker Desktop的文件标签里能看到挂载的文件,可Python就是读不到。
先给大家看一下出问题的简化版代码:
env_path = "resources/.env" if os.path.exists(env_path): load_dotenv(env_path) else: raise ResourcesMissing('.env missing') tg_token_env = "resources/tg_token.env" if os.path.exists(tg_token_env): load_dotenv(tg_token_env) else: raise ResourcesMissing('tg_token.env missing')
下面是我的Docker相关配置文件:
docker-compose.yml 配置
services: bot: build: . volumes: - ./media:/app/media:ro - ./resources:/app/resources:rw
Dockerfile 内容
FROM python:3.13.5-slim WORKDIR /usr/src/app ENV CONTAINER=docker RUN mkdir -p /app/media RUN mkdir -p /app/resources RUN apt-get update RUN pip install --upgrade pip COPY . . # 此处省略安装依赖的步骤 CMD ["python", "bot.py"]
另外我还有个.dockerignore文件,内容是:
media/* resources/*
我已经排查和尝试过的操作:
- 确认了Docker Desktop的文件标签里,容器确实已经挂载了目标文件,但Python就是检测不到
- 试过修改
docker-compose.yml的各种写法,调整挂载路径的格式 - 把
.env文件打包进镜像里是能正常读取的,但我必须用绑定挂载的方式来管理这些文件 - 尝试过在
docker-compose.yml里用env_file配置 - 各种能想到的小调整都试了个遍,但每次运行还是会抛出找不到文件的异常
有没有大佬能帮我分析下这到底是哪里出问题了?
内容来源于stack exchange
相关产品推荐
相关产品推荐

