簡體   English   中英

如何將 docker-compose 中的 map 額外主機連接到容器網關?

[英]How to map extra host in docker-compose to container gateway?

我有一個案例,我需要從 docker 容器調用外部 API,但只能通過它的 URL 來實現。 為了做到這一點,我將這個 URL 映射到容器網關,這是有效的,但我需要它是動態的,因為我需要在不同的設備上運行這個 docker-compose,據我所知,網關是不同的。

version: '3'

services:
  pdf-service:
    image: $IMAGE:latest
    container_name: pdf-$LOCALE
    environment:
      - NODE_ENV=production
      - LOCALE=${LOCALE}
      - API_URL=${API_URL}
    extra_hosts:
      - ${API_HOST}:172.24.0.1
    tty: true
    restart: always
    ports:
      - ${PORT}:8124

目前我已經對其進行了硬編碼,如您所見 - 172.24.0.1,它是容器的網關。 我發現了類似host.gateway的東西,但不知道如何正確使用它。 我也讀過它在生產中不起作用? 我的生產環境是 Debian 10 和 Docker v. 18.09.1 和 docker-compose v.1.21.0。

IP 172.24.0.1位於 Docker 內部。 當您添加額外的主機時,您需要將 map 命名為公共 IP。

從您的主機運行ping <api_host>以獲取公共 IP。 在 docker-compose.yml 中使用 IP 而不是172.24.0.1

如果您要訪問的服務也在 Docker 中運行,那么它必須在主機上公開一個端口才能訪問它。 因此,您需要的 IP 是您的主機的本地網絡 IP(如果出於某種原因需要,則為公共網絡)。

如果您必須達到 Docker 內部的 IP,那么您不必聲明 extra_host。 您只需將容器/服務放在同一個網絡上並按名稱相互引用。

我認為您可以使用網絡,容器可以加入許多網絡,如果兩個容器在同一個網絡中,它們可以通過主機(服務名稱)找到另一個

暫無
暫無

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

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