Python Dockerfile可以';t copy&;Docker compose卷不与容器同步
我正在使用Docker windows桌面客户端并尝试构建一个Flask python容器。dockerfile将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 |
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,您是说您编辑了文件,访问了网站,但没有看到任何更改吗?如果是这样,那是意料之中的。您正在编辑文件,但进程已在运行。为了检查新的更改,您需要重新运行流程,但这样做会在流程完成时终止容器。换句话说,您可以动态编辑静态文件,但无法编辑正在运行的进程。这也是我的想法,但在这里似乎可行: