我想知道是否有一种方法可以使用从部署容器的主机中获取的环境变量,而不是从 docker stack deploy 中获取的环境变量。命令被执行。例如想象以下 docker-compose.yml 在三节点 Docker Swarm 集群上启动:
version: '3.2'
services:
kafka:
image: wurstmeister/kafka
ports:
- target: 9094
published: 9094
protocol: tcp
mode: host
deploy:
mode: global
environment:
KAFKA_JMX_OPTS: "-Djava.rmi.server.hostname=${JMX_HOSTNAME} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.rmi.port=1099"
JMX_HOSTNAME 应该取自实际部署容器的主机,并且不应为每个容器使用相同的值。 有没有正确的方法来做到这一点?
Best Answer-推荐答案 strong>
是的,当您结合两个概念时,这会起作用:
群 node labels ,其中 Hostname 是内置的其中之一。 群 service go templates ,这也适用于堆栈文件。 这会将主机名拉入 DUDE 的 ENV 值,使每个容器成为它运行的主机:
version: '3.4'
services:
nginx:
image: nginx
environment:
DUDE: "{{.Node.Hostname}}"
deploy:
replicas: 3
关于docker - 使用 docker stack 部署主机环境变量,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/49025686/
|