Использование {{node.hostname}} в docker-compose.yml в режиме роя Docker - PullRequest
0 голосов
/ 08 мая 2018

Привет! Я смотрю на приведенный выше пример и пытаюсь запустить стек роя Docker, но получаю ошибку ниже. не уверен, что мне здесь не хватает.

докер-compose.yml

services:
  nginx:
    image: nginx
    hostname: '{{.Node.Hostname}}'
version: '3.3'

развертывание стека докеров test -c docker-compose.yml

, но ниже значения вывода / ошибка: ответ от демона: rpc ошибка: code = InvalidArgument desc = расширение имени хоста не удалось: template: расширение: 1: 7: выполнение «расширения» в <.Node.Hostname>: невозможно оценить поле Hostname в типе struct {ID string}

Вот мой вывод информации о докере:

Информация о докере Контейнеры:

12 Продолжительность: 0 Приостановлено: 0 Остановлено: 12 изображений: 41 Версия сервера: 18.03.1-ce Драйвер хранилища: устройство устройства Название пула: docker-253: 1-2490377-Pool Pool Размер блока: 65,54 КБ Размер устройства: 10,74 ГБ Поддержка файловой системы:

Заранее спасибо.

1 Ответ

0 голосов
/ 15 июля 2019

Я попробовал вашу настройку с version: '3.3' и version: '3.4' compose.

Согласно https://docs.docker.com/engine/reference/commandline/service_create/#create-services-using-templates имя хоста - это одно из полей, в котором можно использовать строки шаблона, поэтому оно должно работать нормально.

После создания стека я проверил имя хоста с

$ docker inspect test_nginx | grep name
"com.docker.stack.namespace": "test"
"com.docker.stack.namespace": "test"
"Hostname": "{{.Node.Hostname}}",

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

...