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

我有一个用于运行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

因此,我可以查找Web主机名并将其映射到IP地址192.168.144.3,但在/etc/hosts文件中看不到它。

如何docker-compose专门设置这个curl知道IP地址的容器?

回答:

Docker提供了DNS服务(搜索“容器之间的自动DNS解析”),而Docker

Compose提供了使用它的默认“用户定义”网络。如果您查看/etc/resolv.conf容器内部,它应该指向一个Docker专用IP地址,该地址为通用Internet和其他容器提供主机名解析。

更具体地说,在Docker Compose上下文中,该services:块中每个条目的名称可由从同一docker-

compose.yml文件启动的其他容器解析为主机名。你并不需要设置container_name:hostname:links:,或networks:;

这都是为您自动配置的。

以上是 docker-compose如何将我的服务名称映射到IP地址? 的全部内容, 来源链接: utcz.com/qa/429825.html

回到顶部