что означает двойная стрелка (<<: * django) в dockerfile? - PullRequest
0 голосов
/ 28 апреля 2018

Я вижу что-то вроде

   celerybeat:
     <<: *django

in https://github.com/pydanny/cookiecutter-django пример файлов Docker.

Что это значит? Я не могу гуглить <<: *

1 Ответ

0 голосов
/ 28 апреля 2018

<< и * оба являются ключами YAML (их также можно рассматривать как операторы). И еще один ключ, связанный с вашим вопросом: &.

В YAML вы можете определять якоря и позже использовать их. Например,

foo: &myanchor
  key1: "val1"
  key2: "val2"

bar: *myanchor

В этом фрагменте кода & определяет имена якорей, которые myanchor, а *myanchor ссылается на этот якорь. Теперь и foo, и bar имеют одинаковые ключи и значения.

<< называется ключом слияния YAML . Вы можете сравнить его с наследованием классов в ООП (не очень точно, но может помочь вам понять). См. Пример ниже.

foo: &myanchor
  key1: "val1"
  key2: "val2"

bar:
  << : *myanchor
  key2: "val2-new"
  key3: "val3"

В этом фрагменте кода мы объединяем ключи и значения от foo до bar, но переопределяем key2 на новое значение. И мы добавляем новую пару ключ-значение к bar.

Теперь bar имеет следующее значение: {"bar": {"key1": "val1", "key2": val2-new", "key3": "val3"}}.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...