Элемент верхнего уровня configs

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

При предоставлении доступа к конфигурации содержимое конфигурации монтируется в виде файла в контейнере. Расположение точки подключения внутри контейнера по умолчанию — /<config-name> в контейнерах Linux и C:\<config-name> в контейнерах Windows.

По умолчанию конфигурация ДОЛЖНА принадлежать пользователю, запускающему команду контейнера, но может быть переопределена конфигурацией службы. По умолчанию конфигурация ДОЛЖНА иметь права на чтение для всех (режим 0444), если служба не настроена для переопределения этого.

Службы могут получает доступ к конфигурациям только в том случае, если они явно предоставлены подразделом конфиги.

Объявление configs верхнего уровня определяет или ссылается на данные конфигурации, которые могут быть предоставлены службам в этом приложении. Источником конфигурации является либо file, либо external.

  • file: конфигурация создаётся с содержимым файла по указанному пути.

  • external: если установлено значение true, указывает, что эта конфигурация уже создана. Реализация Compose не пытается его создать, и если он не существует, вызывается ошибка.

  • name: имя объекта конфигурации на платформе для поиска. Это поле можно использовать для ссылки на конфигурации, содержащие специальные символы. Имя используется как есть и не связано с именем проекта.

В этом примере http_config создаётся (как <project_name>_http_config) при развертывании приложения, а my_second_config ДОЛЖЕН уже существовать на платформе, и значение будет получено путём поиска.

В этом примере server-http_config создаётся как <project_name>_http_config при развертывании приложения путём регистрации содержимого httpd.conf в качестве данных конфигурации.

configs:
  http_config:
    file: ./httpd.conf

В качестве альтернативы http_config можно объявить внешним, в этом случае реализация Compose будет искать http_config, чтобы предоставить данные конфигурации соответствующим службам.

configs:
  http_config:
    external: true

Поиск внешних конфигураций также может использовать отдельный ключ, указав name . Следующий пример изменяет предыдущий для поиска конфигурации с использованием параметра HTTP_CONFIG_KEY . При этом фактический ключ поиска будет установлен во время развертывания с помощью интерполяция переменных, но будет отображаться для контейнеров как жестко закодированный идентификатор http_config .

configs:
  http_config:
    external: true
    name: "${HTTP_CONFIG_KEY}"

Если для external установлено значение true, а в секретной конфигурации установлены другие атрибуты, кроме name, учитывая, что ресурс не управляется жизненным циклом компоновки, реализации Compose ДОЛЖНЫ отклонить файл Compose как недействительный.

В файле Compose необходимо явно предоставить доступ к конфигурациям соответствующим службам в приложении.