gpt4 book ai didi

Docker-compose:将主机名设置为等于容器运行所在的主机名

转载 作者:行者123 更新时间:2023-12-02 06:46:41 25 4
gpt4 key购买 nike

现在,我的 swarm 集群中有两个节点

$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
yey1njv9uz8adf33m7oz0h80f * redis2 Ready Active Leader
lbo91v2l15h24isfd5jegoxu1 redis3 Ready Active

这是 docker-compose.yml 文件

version: "3"
services:
daggr:
# replace username/repo:tag with your name and image details
image: daggr
hostname: examplehostname
deploy:
replicas: 1
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
redis:
image: redis
networks:
- webnet
networks:
webnet:

如您所见,我明确为 daggr 服务设置主机名

daggr 容器基本上运行一个 python Tornado Web 服务器

class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write('Hello from daggr running on %s\n' % socket.gethostname())

我测试过如下

$ curl redis2:4000
Hello from daggr running on examplehostname

现在,我希望它与容​​器运行所在的主机名动态匹配,而不是静态设置主机名。 IE。如果 daggr 容器在 redis2 上运行,则应显示为 redis2,如果在 redis3 上运行,则应显示为 redis3。

如何从 docker-compose.yml 文件中指定它?

最佳答案

如果您至少运行 Docker 17.10 那么您可以使用如下内容:

services:
daggr:
hostname: '{{.Node.Hostname}}'

参见this了解更多信息。

关于Docker-compose:将主机名设置为等于容器运行所在的主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49665304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com