Docker – 使用容器名称创build容器IP地址

我的docker-compose有两个服务,docker-compose.yml用容器名定义环境variablesip地址,

version: '2' services: api: build: ./api/ command: python3 manage.py runserver volumes: - ./api:/code ports: - "8000:80" networks: - dock_net container_name: con_api web: build: ./web/ command: python3 manage.py runserver volumes: - ./web:/code ports: - "8001:80" networks: - dock_net container_name: con_web environment: Ip:con_ip networks: dock_net: driver: bridge 

但variables看到“con_ip”不是127.0.0.3

我不认为你正在使用环境variables。 撰写中请参阅环境variables 。

您只需使用该容器的服务名称即可从其他容器访问一个容器。 这是推荐的方法。

但是,如果你更喜欢IP地址的原因,我告诉你如何设置容器的静态IP地址,我不会推荐它。

 version: '2' services: api: build: ./api/ command: python3 manage.py runserver volumes: - ./api:/code ports: - "8000:80" networks: - dock_net: ipv4_address: 127.0.0.3 container_name: con_api web: build: ./web/ command: python3 manage.py runserver volumes: - ./web:/code ports: - "8001:80" networks: - dock_net: ipv4_address: 127.0.0.4 container_name: con_web networks: dock_net: driver: bridge ipam: config: - subnet: 127.0.0.0/8 gateway: 127.0.0.1 

这会将所需的IP地址分配给您的容器。 API将在127.0.0.3web将在127.0.0.4

编辑:如果你想从Web容器内部访问名为api服务,那么你可以使用它的IP地址,因为我们已经在这里分配。 http://127.0.0.3:80/或者你也可以使用http&#xFF1A:// api:80 /

api用于代替IP地址,因为它的服务名称和没有给出主机名时,服务名称被视为默认的主机名。 如果您想知道主机名称,请参考此问题。