我的 docker-compose 文件中有一个示例计算服务,它按预期工作得很好。
version: "3"
services:
compute-service:
image: dummy/compute
environment:
- INPUT=2
然而,有时我需要使用不同的输入来运行此服务(例如 INPUT = 4、7、9、10、12 等)。我不喜欢为每个输入多次复制和粘贴服务的想法。缩放是一种选择。但是我如何确保每个实例都适用于唯一的输入变量。
我知道我可以使用这样的环境变量。我的问题与如何传递唯一值作为缩放的一部分有关!
version: "3"
services:
compute-service:
image: dummy/compute
environment:
- INPUT=${INPUT}
With docker-compose
, 我不相信对此有任何支持 https://github.com/docker/compose/issues/4964。但是,在 Swarm 模式下,可以使用类似的 compose 文件,您可以通过{{.Task.Slot}}
作为环境变量使用服务模板 https://docs.docker.com/engine/reference/commandline/service_create/#create-services-using-templates。您可以使用以下命令部署单节点 swarm 集群docker swarm init
。代替docker-compose up
,我正在部署以下示例docker stack deploy -c docker-compose.yml test
.
这是一个使用 docker-compose.yml 文件的示例{{.Task.Slot}}
功能:
version: '3'
services:
test:
image: busybox
command: /bin/sh -c "echo My task number is $$task_id && tail -f /dev/null"
environment:
task_id: "{{.Task.Slot}}"
deploy:
replicas: 5
然后,检查每个正在运行的容器:
$ docker ps --filter label=com.docker.swarm.service.name=test_test
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ccd0dbebbcbe busybox:latest "/bin/sh -c 'echo My…" About a minute ago Up About a minute test_test.3.i3jg6qrg09wjmntq1q17690q4
bfaa22fa3342 busybox:latest "/bin/sh -c 'echo My…" About a minute ago Up About a minute test_test.5.iur5kg6o3hn5wpmudmbx3gvy1
a372c0ce39a2 busybox:latest "/bin/sh -c 'echo My…" About a minute ago Up About a minute test_test.4.rzmhyjnjk00qfs0ljpfyyjz73
0b47d19224f6 busybox:latest "/bin/sh -c 'echo My…" About a minute ago Up About a minute test_test.1.tm97lz6dqmhl80dam6bsuvc8j
c968cb5dbb5f busybox:latest "/bin/sh -c 'echo My…" About a minute ago Up About a minute test_test.2.757e8evknx745120ih5lmhk34
$ docker ps --filter label=com.docker.swarm.service.name=test_test -q | xargs -n 1 docker logs
My task number is 3
My task number is 5
My task number is 4
My task number is 1
My task number is 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)