В чем разница между объявлением тома docker-compose.yml разделом и службой?

Другой вариант. Посмотрите, что Python по умолчанию importlib.reload просто переименует библиотеку, переданную в качестве аргумента. Он не перезагрузит библиотеки, которые импортируют ваш lib. Если вы изменили много файлов и имеете несколько сложный пакет для импорта, вы должны сделать глубокую перезагрузку.

Если вы установили IPython или Jupyter , вы можете использовать функцию для глубокой перезагрузки всех libs:

from IPython.lib.deepreload import reload as dreload
dreload(foo)

Если у вас нет Jupyter, установите его с помощью этой команды в свою оболочку:

pip3 install jupyter

0
задан Carven 3 March 2019 в 11:45
поделиться

1 ответ

Разница между методами, которые вы описали, заключается в том, что первый метод - это bind mount , а другой - том . Это больше функций Docker (нежели Docker Compose), и есть несколько преимуществ, которые предоставляют тома при монтировании пути из файловой системы вашего хоста. Как описано в документации, они:

  • проще создавать резервные копии или переносить
  • можно управлять с помощью docker volumes или API (в отличие от необработанной файловой системы) [119 ]
  • работа с контейнерами как Linux, так и Windows
  • может безопасно использоваться несколькими контейнерами
  • может иметь контент, предварительно заполненный контейнером (при монтировании bind иногда приходится копировать данные , а затем перезапустите контейнер)

Другим значительным преимуществом использования томов являются драйверы томов , которые вы указали бы вместо local. Они позволяют удаленно хранить тома (например, в облаке и т. Д.) Или добавлять другие функции, такие как шифрование. Это является основой концепции контейнеров, потому что если запущенный контейнер не имеет состояния и использует удаленные тома, вы можете перемещать контейнер между узлами, и его можно запускать без перенастройки.

Поэтому рекомендуется использовать тома Docker. Другим хорошим примером является следующий:

services:
  webserver_a:
    volumes:
      - ./serving/prod:/var/www
  webserver_b:
    volumes:
      - ./serving/prod:/var/www
  cache_server:
    volumes:
      - ./serving/prod:/cache_root

Если вы переместите каталог ./serving куда-нибудь еще, привязка монтирования прекратится, потому что это относительный путь. Как вы заметили, тома имеют псевдонимы и управляют их путем Docker, поэтому:

  1. вам не нужно будет находить и заменять путь 3 раза
  2. тома с помощью [114 ] хранит данные где-то еще в вашей системе и будет продолжать монтировать просто отлично

TL; DR: попробуйте и используйте тома. Они переносимы и поощряют действия, которые уменьшают зависимости от вашего хост-компьютера.

0
ответ дан hexacyanide 3 March 2019 в 11:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: