Мне нужно развернуть докерский стек на нескольких узлах в Docker Swarm. Существуют некоторые динамические значения, такие как путь к ssl-сертификатам, который отличается для каждого рабочего узла. Я знаю, что не могу передать значения в переменных среды, потому что все узлы получат значения, извлеченные из среды узла менеджера.
Я искал и нашел другой вопрос в StackOverflow, касающийся той же проблемы. Вот URL
В решении указано, что я должен использовать приведенную ниже команду для каждого узла, чтобы установить значения.
docker node update --label-add key=value <node-id>
Моя проблема - когда я хочу прочитать значения в файле docker-compose.yaml
, я получаю сообщение об ошибке:
service proxy: undefined volume "{{.Node.Labels.Chain}}"
Я развертываю с помощью команды:
docker stack deploy -c docker-compose.yaml stack_name
Вот файл docker-compose.yaml
:
version: '3'
services:
redis:
image: redis:latest
deploy:
mode: global
restart_policy:
condition: on-failure
networks:
- connector
proxy:
image: myusername/myrepo:${VERSION}
deploy:
mode: global
restart_policy:
condition: on-failure
volumes:
- "{{.Node.Labels.Chain}}:/fullchain.pem"
- "{{.Node.Labels.Key}}:/privkey.pem"
- "${ERROR_LOG}:/err.log"
ports:
- "${HOST_PORT}:${CONTAINER_PORT}"
networks:
- connector
networks:
connector:
Я пробовал разные значения для версии, такие как 3
или 3.4
, но не помогло.
Я выполнил команду docker node inspect <HOST_NAME>
, и вот результаты, относящиеся к разделу Labels
:
"Spec": {
"Labels": {
"Chain": "/etc/letsencrypt/live/mydomain.com/fullchain.pem",
"Key": "/etc/letsencrypt/live/mydomain.com/privkey.pem"
},
"Role": "manager",
"Availability": "active"
}
Я пробовал разные значения для ключа монтирования в docker-compose.yaml
файле, например {{.Node.Spec.Labels.Chain}}
, но они тоже не помогли.
Буду признателен, если кто-нибудь поможет мне решить проблему.
Результаты docker version
:
Client:
Version: 18.09.7
API version: 1.39
Go version: go1.10.8
Git commit: 2d0083d
Built: Thu Jun 27 17:56:23 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.7
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 2d0083d
Built: Thu Jun 27 17:23:02 2019
OS/Arch: linux/amd64
Experimental: false