docker-compose中的域配置

Tam*_*mas 8 dns docker docker-compose

如何使用中的域配置主机名docker-compose.yml

假设服务worker需要webhttp://web.local/地址上的服务。但是web.local无论我使用hostname指令配置了什么,都无法解析为IP地址。添加extra_hosts指令也不起作用,因为我应该知道该服务的IP web,但我不知道,因为它是由docker分配的。

docker-compose.yml:

version: '3'
services:
  worker:
    build: ./worker
    networks:
      - mynet    
  web:
    build: ./web
    ports:
      - 80:80
    hostname: web.local
    networks:
      - mynet
networks:
  mynet:
Run Code Online (Sandbox Code Playgroud)

ping web.local无法在服务内部解析worker

Con*_*enu 8

为此,您需要alias在网络中添加一个mynet

官方文档中:

网络上此服务的别名(备用主机名)。同一网络上的其他容器可以使用服务名称或此别名来连接到服务的容器之一。

因此,您的docker-compose.yml文件应如下所示:

version: '3'
services:
  worker:
    build: ./worker
    networks:
      - mynet  
  web:
    build: ./web
    ports:
      - 80:80
    hostname: web.local
    networks:
       mynet:    
          aliases:
            - web.local
networks:
  mynet:
Run Code Online (Sandbox Code Playgroud)