gpt4 book ai didi

docker - 使用docker-compose将多个Docker容器链接到一个别名为localhost的容器

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

我正在尝试将Memcache服务器和mongo服务器链接到我的Web服务器,但是我使用的代码将localhost用作所有主机的主机名。所以我想将它们链接为本地主机。

我正在这样做-

webserver:
build: ./webserver
ports:
- "127.0.0.1:80:80"
volumes:
- /var/www/html:/var/www/html
links:
- memcachedserver:localhost
- mongoserver:localhost

但是进入网络服务器后
docker exec -it acb51XXXX081 bash


cat /etc/hosts

我得到这个-
127.0.0.1       localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 adocker_memcachedserver_1 4a11d0cb3126
172.17.0.2 localhost 4a11d0cb3126 adocker_memcachedserver_1
172.17.0.2 memcachedserver_1 4a11d0cb3126 adocker_memcachedserver_1
172.17.0.3 adocker_mongoserver_1 a505d8de4736
172.17.0.3 mongoserver_1 a505d8de4736 adocker_mongoserver_1

仅memcache服务器获得别名localhost,而不是mongo服务器。

在我将localhost手动添加到mongo的条目后,它开始运行良好。
172.17.0.3      localhost adocker_mongoserver_1 a505d8de4736

但是我想在docker-compose.yml文件中自动执行此操作

有任何想法吗?

最佳答案

您不能给两个不同的主机使用相同的名称。您确实应该更改代码-将localhost硬编码为不同服务的主机名是一个坏主意。 (最好为每个服务使用不同的主机名。如果它们实际上在同一主机上运行,​​则可以为这些主机名加上别名以指向该主机名。)

如果您确实无法更改代码,则可以设置从实际localhost到托管服务的容器的隧道。

关于docker - 使用docker-compose将多个Docker容器链接到一个别名为localhost的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35624298/

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