Jac*_*phy 4 docker swarm docker-swarm docker-container
假设我有一个名为 Whale 的 docker swarm 服务,其副本数为 10
当容器启动时
运行时程序如何确定它是哪个副本编号?
IE:“我是鲸鱼复制品 10 中的 3”
最简单的方法是通过环境变量来告诉它,并使用docker service create支持的模板参数。
撰写语法如下所示。
services:
replicated-service:
environment:
REPLICA: "{{.Task.Slot}}"
Run Code Online (Sandbox Code Playgroud)
如果你需要使用它作为Go Templates的一部分command或者entrypoint不支持扩展。您可以在 shell 中使用该值。(请注意,healthcheck.test不需要此解决方法,因为它默认为CMD-SHELL)
services:
replicated-service:
image: alpine/socat
hostname: whale{{.Task.Slot}}
entrypoint: [
"/bin/sh",
"-c",
"exec socat tcp-listen:9092,fork TCP:whale$$REPLICA:9092"
]
environment:
REPLICA: "{{.Task.Slot}}"
healthcheck:
test: socat /dev/null TCP:whale$$REPLICA:9092
deploy:
replicas: 2
Run Code Online (Sandbox Code Playgroud)
另请注意,$$要逃避$YAML 处理。
| 归档时间: |
|
| 查看次数: |
2249 次 |
| 最近记录: |