Docker文件无法复制 & Docker-compose 卷不与容器同步

Dockerfile can't copy & Docker-compose volume does not sync with container

我正在使用 Docker windows 桌面客户端并尝试构建 Flask python 容器。 docker 文件将 requirements.txtflask-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'

但是如果我将 docker 文件更改为:

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 up 之后,docker-compose 中指定的卷不与容器同步。如果我对 flask-script.py 文件进行任何更改,容器将看不到它们。

我做错了什么?

当您添加 WORKDIR 时它确实有效,因为您在该目录中拥有所有文件。

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