Ale*_*isi 6 docker docker-swarm docker-swarm-mode
我想知道是否有办法使用从部署容器的主机获取的环境变量,而不是从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"
Run Code Online (Sandbox Code Playgroud)
该JMX_HOSTNAME
应当从容器部署,不应该成为每个容器相同的值主机服用.有没有正确的方法来做到这一点?
Bre*_*her 15
是的,当你结合两个概念时,这是有效的:
这会将主机名拉入DUDE的ENV值,以使每个容器成为其运行的主机:
version: '3.4'
services:
nginx:
image: nginx
environment:
DUDE: "{{.Node.Hostname}}"
deploy:
replicas: 3
Run Code Online (Sandbox Code Playgroud)
如果您通过env运行 docker 命令,它会起作用。
env JMX_HOSTNAME="${JMX_HOSTNAME}" docker stack deploy -c docker-compose.yml mystack
Run Code Online (Sandbox Code Playgroud)
感谢GitHub的问题是指出我朝着正确的方向发展。
归档时间: |
|
查看次数: |
7375 次 |
最近记录: |