gpt4 book ai didi

docker - docker-compose 如何将我的服务名称映射到 IP 地址?

转载 作者:行者123 更新时间:2023-12-02 19:03:58 30 4
gpt4 key购买 nike

我有一个用于运行 Web 应用程序的 docker-compose.yml 文件。

version: '3'
services:
web:
entrypoint: gunicorn myapp.wsgi:application --bind 0.0.0.0:7000
...
nginx:
ports:
# HOST:CONTAINER
- 80:80
- 443:443
...

在我的 nginx服务容器:
$ 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
192.168.144.4 790c0822b887

$ curl http://web:7000

<h1>Bad Request (400)</h1>

$ traceroute web

traceroute to web (192.168.144.3), 30 hops max, 46 byte packets
1 ec2-user_web_1.ec2-user_default (192.168.144.3) 0.008 ms 0.007 ms 0.006 ms

所以我可以查找网络主机名并将其映射到 IP 地址 192.168.144.3 ,但我在 /etc/hosts 中没有看到它文件。

如何 docker-compose专门设置此容器,以便 curl知道IP地址吗?

最佳答案

Docker provides a DNS service (搜索“容器间的自动 DNS 解析”)和 Docker Compose provides a default “user-defined” network that uses it .如果你看/etc/resolv.conf在您的容器内,它应该指向一个 Docker 私有(private) IP 地址,该地址为通用 Internet 和其他容器提供主机名解析。

更具体地说,在 Docker Compose 上下文中,services: 中的每个条目的名称 block 可被从同一 docker-compose.yml 启动的其他容器解析为主机名文件。您不需要设置container_name: , hostname: , links: , 或 networks: ;这一切都是为您自动配置的。

关于docker - docker-compose 如何将我的服务名称映射到 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56135964/

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