Dockerfile не может копировать & том Docker-compose не синхронизируется с контейнером - PullRequest
0 голосов
/ 11 ноября 2019

Я использую настольный клиент Docker для Windows и пытаюсь создать контейнер Python для Flask. 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'

НО Если я изменю файл настройки на:

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, они не будут обнаружены контейнером.

Что я делаю не так?

1 Ответ

1 голос
/ 11 ноября 2019

Это работает, когда вы добавляете WORKDIR, потому что у вас есть все файлы в этом каталоге.

Однако, в вашем первом Dockerfile вы копируете все в /usr/src/app, но не меняете свойрабочий каталог к ​​этому каталогу, поэтому requirements.txt недоступен, так как находится в /root/requirements.txt

...