簡體   English   中英

docker-compose 相同服務名稱在不同 docker-compose 文件沖突

[英]docker-compose identical service names in different docker-compose files collision

有 2 個服務有 2 個docker-compose.yml文件。 這些服務通過橋接網絡連接,因此它們可以在本地進行通信。

  1. service_1 docker-compose.yml
version: '3.7'

services:
    django:
        build:
            context: .
        ports:
            - "6000:6000"
        networks:
            - shared-local-network
        command: python manage.py runserver 0.0.0.0:6000

networks:
    shared-local-network:
        external: true
  1. service_2 docker-compose.yml
version: '3.7'

services:
    django:
        build:
            context: .
        ports:
            - "8000:8000"
        networks:
            - shared-local-network
        command: python manage.py runserver 0.0.0.0:8000

networks:
    shared-local-network:
        external: true

所以這些服務在不同的項目中,但它們的服務名稱是相同的: django

但是當我嘗試從另一個服務請求一項服務時,例如從 service_1 向 service_2 發送請求:

curl http://django:8000無法訪問。

netcat -vz django 8000表明它也無法訪問。

我注意到當從 service_1 向http://django:8000發送請求時,它向自己的 service_1 發送請求,這就是它找不到打開的 8000 端口的原因,因為 service_1 有 6000 個打開的端口。

是否可以在不將服務重命名為docker-compose.yml中的唯一服務的情況下解決問題?

讓我們假設您有這兩條路徑:

/home/service_1/
/home/service_2/

並且service_1docker-compose在其同名目錄中,並且service_2也是如此。

運行service_1docker-compose時,運行容器名稱為service_1_django ,運行service_2docker-compose時,運行容器名稱為service_2_django

因此,為了連接這兩者,您應該在每個容器中使用這兩個名稱中的任何一個:

service_1_django
service_2_django

暫無
暫無

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

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