Разработка в docker-compose.Получение контейнера для распознавания изменений кода - PullRequest
0 голосов
/ 31 марта 2019

У меня есть Docker-контейнер со средой Python3 и различными библиотеками.

Я пытаюсь разработать простую программу на Python для этой среды.

Итак, у меня есть том с моим исходным кодом вне контейнера, который ДОБАВЛЕН и установлен как WORKDIR в Dockerfile.

Затем я обстреливаю контейнер и пытаюсь запустить программу из командной строки.

Когда я сталкиваюсь с ошибкой, я хочу просто изменить источник в моем редакторе, который находится за пределами контейнера, и запустить снова.

Однако, когда я делаю это, исполняющий код в контейнере, кажется, не замечает изменений, которые я сделал.

Если я сделаю

docker-compose up --build 

и восстановите контейнер, затем он сделает это.

Очевидно, что это очень медленно.

Конечно, контейнер должен видеть изменения в коде, над которым я работаю, без перестройки? Если да, то как мне это сделать?

1 Ответ

4 голосов
/ 31 марта 2019

Использование ADD превращает файлы в образ контейнера, поэтому, как вы заметили, обновление файлов в работающем приложении требует полной перестройки контейнера и перезапуска.Чтобы обойти это, вы можете смонтировать каталог на вашем хост-компьютере по пути, который вы скопировали в ваш контейнер, используя ADD.

. Для этого в Docker вы можете использовать -v или * 1006.*.Используя Docker Compose, вы можете перечислить каталог для монтирования в volumes:.Например, если в вашем файле сборки было следующее:

# Copy app code into the container working directory
ADD /my/app/code /usr/app/src

Вы можете смонтировать свой код live поверх запеченных файлов во время запуска контейнера (обратите внимание, что пути к каталогамдолжен быть абсолютным - вы можете использовать $PWD для этого):

$ docker run -v /my/live/app/code:/usr/app/src python:latest
$ docker run -v "$PWD"/app/code:/usr/app/src python:latest

Эквивалент docker-compose.yml выглядит следующим образом:

my-service:
  image: python:latest
  volumes:
    - /my/live/app/code:/usr/app/src
    - ./relative/paths:/work/too

В * 1021 есть больше информации о bind mounts* документация .

...