簡體   English   中英

帶有容器名稱的Docker-Compose容器IP地址

[英]Docker-Compose container ip address with container name

我的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

但是變量請參見“ con_ip”而不是127.0.0.3

我認為您沒有正確使用環境變量。 在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

這會將所需的IP地址分配給您的容器。 API將為127.0.0.3web127.0.0.4

編輯:如果您想從Web容器內部訪問名為api服務,則可以使用它的IP地址,因為我們已經在此處分配了它。 http://127.0.0.3:80/或您也可以使用http:// api:80 /

使用api代替IP地址是因為它是服務名稱,如果沒有提供主機名,則將服務名稱作為默認主機名。 如果您想了解主機名,請參考問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM