Dockerfile ДОБАВИТЬ. добавляет неправильный каталог - PullRequest
0 голосов
/ 02 января 2019
.
|-- business_logic
|   ....
|
|-- docker-compose.yml
|-- src
|   `-- backend
|       |-- Dockerfile
|       |-- manage.py
|       |-- requirements.txt
|       `-- webapp
|           |-- __init__.py
|           |-- settings.py
|           |-- urls.py
|           `-- wsgi.py
`-- utils.py

Я хочу, чтобы Docker скопировал . / Src / backend / в / code / на контейнере, и когда я запускаю этот составной файл:

version: '3'

services:
  db:
    image: postgres
  web:
    build:
      context: ./src/backend/
    command: ls -l .
    volumes:
      - .:/code/
    ports:
      - "8000:8000"
    depends_on:
      - db

С Dockerfile под backend :

FROM python:3
ENV PYTHONUNBUFFERED 1

RUN mkdir /code
WORKDIR /code

ADD requirements.txt /code/
RUN pip install -r requirements.txt

ADD . /code/

Я ожидаю, что позиция Dockerfile в дереве файлов или в контексте будет относительным путем "." в Dockerfile, но кажется, что "." указывает на каталог, где лежит docker-compose.yml. Поскольку вывод следующий:

web_1  | drwxr-xr-x 14 root root 448 Jan  2 01:51 business_logic
web_1  | -rw-r--r--  1 root root 207 Jan  2 03:10 docker-compose.yml
web_1  | drwxr-xr-x  3 root root  96 Jan  2 02:34 src
web_1  | -rw-r--r--  1 root root 657 Jan  2 01:51 utils.py

Как скопировать только все, что находится под бэкэндом , в код ?

1 Ответ

0 голосов
/ 02 января 2019

В docker-compose, когда вы используете том для отображения, он отображает ваш текущий каталог (который параллелен docker-compose.yml), однако в случае Dockerfile "." означает текущий каталог в соответствии с заданным вами контекстом Docker (./src/backend/).

Здесь после подготовки образа Docker при создании тома контейнера происходит переопределение.
подсказка - сначала используйте тот же контекст докера, а затем соответствующим образом скорректируйте пути.

Попробуйте следующий docker-compose.yml

    version: '3'

    services:
      db:
        image: postgres
      web:
        build:
          context: ./src/backend/
        command: ls -l .
        volumes:
          - ./src/backend/:/code/
        ports:
          - "8000:8000"
        depends_on:
          - db
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...