Docker文件无法复制 & Docker-compose 卷不与容器同步
Dockerfile can't copy & Docker-compose volume does not sync with container
我正在使用 Docker windows 桌面客户端并尝试构建 Flask python 容器。 docker 文件将 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'
但是如果我将 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
我正在使用 Docker windows 桌面客户端并尝试构建 Flask python 容器。 docker 文件将 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'
但是如果我将 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