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

修改Dockerfile中WORKDIR导致pip安装requirements.txt失败

问题原因及解决办法

你遇到的问题不是Docker复制机制的问题,而是**/dev目录的特殊性**导致的:

在Linux系统(包括Docker使用的python:slim基础镜像)中,/dev是专门用于存放设备文件的特殊目录,它默认是以tmpfs(临时文件系统)的形式挂载的。tmpfs的内容不会被写入镜像的持久化层,而且在构建镜像的不同步骤之间,tmpfs的内容不会被保留。

这就导致你执行COPY requirements.txt .时,虽然看起来是把文件复制到了/dev目录,但到下一个RUN pip install...步骤时,这个文件已经不存在了——因为tmpfs的内容在步骤切换时被清空了,所以会提示找不到文件。

解决办法

  1. 更换WORKDIR到普通目录:
    不要使用/dev作为工作目录,换成一个自定义的普通目录,比如/myapp,修改后的Dockerfile如下:

    FROM python:3.10-slim
    
    WORKDIR /myapp
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    COPY ./app /myapp/app
    
    CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
    
  2. 如果非要使用/dev下的路径,创建子目录:
    如果你有特殊需求必须在/dev下操作,可以在/dev下创建一个子目录作为工作目录,因为子目录不会继承tmpfs的特性,修改后的Dockerfile如下:

    FROM python:3.10-slim
    
    RUN mkdir -p /dev/myapp
    WORKDIR /dev/myapp
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    COPY ./app /dev/myapp/app
    
    CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
    

内容的提问来源于stack exchange,提问作者Ilya LFBenta Saint

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 09:09:54