使用docker-compose构建容器时找不到requirements.txt的报错求助
解决Docker构建报错:"/dependecies/requirements.txt" not found
问题背景
执行docker-compose up构建容器时,触发以下错误:
failed to solve: failed to compute cache key: "/dependecies/requirements.txt" not found: not found
项目目录结构:
-root -dependencies -requirements.txt -facadeback -Dockerfile ... -docker-compose.yml -main.py
错误原因
- 构建上下文范围限制:docker-compose中
python_app的build指定为./facadeback/,Docker构建时仅将facadeback目录作为上下文,无法访问上级目录的dependencies文件夹。 - 拼写错误:Dockerfile中写的是
dependecies(缺少字母n),但实际目录名是dependencies。 - COPY路径与工作目录不匹配:Dockerfile先将
requirements.txt拷贝到容器根目录,再切换工作目录到/usr/src/app,后续执行pip install -r requirements.txt时会找不到文件。 - 卷挂载路径格式错误:docker-compose中卷挂载的容器内路径缺少开头斜杠(
./facadeback:usr/src/app应为./facadeback:/usr/src/app,容器内路径必须是绝对路径)。
修复步骤
方案一:调整构建上下文(推荐)
修改docker-compose.yml,将构建上下文改为项目根目录,同时指定Dockerfile的具体路径:
version: '3.9' services: python_app: build: context: ./ # 改为项目根目录作为构建上下文 dockerfile: ./facadeback/Dockerfile # 指定Dockerfile位置 container_name: python-backend volumes: - ./facadeback:/usr/src/app # 修正卷挂载路径,添加开头斜杠 command: sh -c "sleep 10s" depends_on: - mysql_db mysql_db: image: mysql container_name: mysql-bd restart: always environment: MYSQL_ROOT_PASSWORD: 1234 volumes: - ./facadeadd/bd:/var/lib/mysql # 修正容器内路径的斜杠 ports: - '3306:3306'
方案二:修正Dockerfile并调整文件位置(可选)
若不想修改构建上下文,可将requirements.txt移动到facadeback目录下,同时修正Dockerfile中的拼写错误和路径:
FROM python:3 RUN apt-get update -y && apt-get upgrade -y RUN apt install -y build-essential portaudio19-dev RUN python -m pip install --upgrade pip # 修正拼写错误,直接拷贝当前上下文的requirements.txt COPY ./requirements.txt /usr/src/app/ WORKDIR /usr/src/app RUN pip install --upgrade pip RUN pip install torch RUN pip install -r requirements.txt CMD ["python", "main.py"] # 补充.py后缀,避免找不到文件
优化Dockerfile(配合方案一使用)
为利用Docker缓存,将依赖安装步骤提前,减少重复构建时间:
FROM python:3 # 先安装系统依赖 RUN apt-get update -y && apt-get upgrade -y && \ apt install -y build-essential portaudio19-dev && \ python -m pip install --upgrade pip # 先拷贝requirements.txt,依赖不变时复用缓存 COPY ./dependencies/requirements.txt /usr/src/app/ WORKDIR /usr/src/app # 安装Python依赖 RUN pip install torch && \ pip install -r requirements.txt # 最后拷贝应用代码,代码变化不影响依赖层缓存 COPY ./facadeback/ ./ CMD ["python", "main.py"]
验证修复
执行docker-compose build --no-cache重新构建镜像,再执行docker-compose up即可正常启动容器。
内容的提问来源于stack exchange,提问作者matheus hopper
相关产品推荐
相关产品推荐

