无法将manage_db文件复制到Docker WORKDIR的问题求助
问题分析与解决
核心原因
Docker构建时只能访问构建上下文目录及其子目录内的文件。你的docker-compose.yml中build: ./api-yahoo-finance/yahoo指定的构建上下文是yahoo文件夹,而manage_db与api_yahoo_finance是同级目录,不在构建上下文范围内,因此COPY命令找不到该目录。
解决方案(优先推荐)
1. 修改docker-compose构建上下文与Dockerfile路径
将构建上下文切换到项目根目录,同时指定Dockerfile的具体位置,这样就能访问到同级的manage_db:
version: "3.8" services: py-api-yahoo-finance: build: context: . # 构建上下文改为项目根目录 dockerfile: ./api_yahoo_finance/yahoo/Dockerfile # 指定Dockerfile的相对路径 ports: - "5000:5000" container_name: api_yahoo_finance command: python manage.py runserver 0.0.0.0:5000
2. 修正Dockerfile中的COPY路径
将原绝对路径/manage_db/*改为基于根上下文的相对路径./manage_db/*(绝对路径会指向宿主机根目录,而非构建上下文):
FROM python:3.8 WORKDIR /yahoo_finance_app COPY requirements.txt /yahoo_finance_app/requirements.txt # 使用构建上下文内的相对路径 COPY ./manage_db/* /yahoo_finance_app/manage_db/ RUN pip3 install -r requirements.txt COPY .. .
额外说明
最后一条COPY .. .在根上下文下会复制项目根目录的所有文件到容器WORKDIR,若仅需复制yahoo目录内的内容,可改为:
COPY ./api_yahoo_finance/yahoo/. .
内容的提问来源于stack exchange,提问作者Django
相关产品推荐
相关产品推荐

