Docker-使用容器名称撰写容器ip地址

Onu*_*aşı 2 docker docker-compose

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

 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
Run Code Online (Sandbox Code Playgroud)

但变量看到"con_ip"不是127.0.0.3

Ayu*_*hya 6

我认为您没有正确使用环境变量.请参考compose中的环境变量.

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

但是如果您因为自己的原因而喜欢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
Run Code Online (Sandbox Code Playgroud)

这将为您的容器分配所需的IP地址.API将会在127.0.0.3,web并将在127.0.0.4

编辑:如果您想访问api从Web容器内部命名的服务,那么您可以使用我们在此处分配的IP地址.http://127.0.0.3:80/或者您也可以使用http:// api:80 /

api代替IP地址的使用,因为它的服务名称,当没有给出主机名,服务名取为默认主机名.如果您想了解主机名,请参阅问题.