Python Dockerfile可以';t copy&;Docker compose卷不与容器同步

Python Dockerfile可以';t copy&;Docker compose卷不与容器同步,python,docker,docker-compose,dockerfile,docker-volume,Python,Docker,Docker Compose,Dockerfile,Docker Volume,我正在使用Docker windows桌面客户端并尝试构建一个Flask python容器。dockerfile将requirements.txt和flask script.py文件复制到python容器中并进行设置 |-root directory (this is where the powershell commands are run from) |-docker-compose.yml |-src | └── Dockerfile | ├── flask-script.py |

我正在使用Docker windows桌面客户端并尝试构建一个Flask python容器。dockerfile将
requirements.txt
flask script.py
文件复制到python容器中并进行设置

|-root directory (this is where the powershell commands are run from)
|-docker-compose.yml
|-src
|  └── Dockerfile
|  ├── flask-script.py
|  ├── requirements.txt
Docker-compose.yml:

version: '3'

services:
  flask-service:
    build: ./src
    volumes:
      - ./src:/usr/src/app
    ports:
      - 8080:80
src/Dockerfile:

FROM python:3

COPY . /usr/src/app

RUN pip install --no-cache-dir -r requirements.txt

CMD [ "python", "./flask-script.py" ]
运行
docker compose up
会出现以下错误:

ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
但是如果我将dockerfile更改为:

FROM python:3

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "python", "./flask-script.py" ]
它确实可以工作,但是在docker compose启动后,docker compose中指定的卷不会与容器同步。如果我对
flask script.py
文件进行任何更改,容器将看不到这些更改


我做错了什么?

添加
WORKDIR
时确实有效,因为该目录中有所有文件


但是,在您的第一个Dockerfile中,您将所有内容复制到
/usr/src/app
,但您不会将workdir更改到该目录,因此
requirements.txt
无法访问,因为它位于
/root/requirements.txt

您有一个输入错误,“src”和“scr”不一样。是的,很抱歉,在问题中输入了一个错误,但是文件目录都是正确的。谢谢你,这很有意义。你知道为什么在主机上更改python不会在容器中更改它吗?@user1031204理论上看起来不错。也许使用与构建上下文和共享卷相同的目录会在docker中造成混乱。我也这么认为,并尝试映射一个不同的目录,该目录会覆盖卷正确映射的dockerfile,但遗憾的是,python文件中的任何更改都不会在container@user1031204当你说有什么变化吗容器看不到flask script.py,您是说您编辑了文件,访问了网站,但没有看到任何更改吗?如果是这样,那是意料之中的。您正在编辑文件,但进程已在运行。为了检查新的更改,您需要重新运行流程,但这样做会在流程完成时终止容器。换句话说,您可以动态编辑静态文件,但无法编辑正在运行的进程。这也是我的想法,但在这里似乎可行: