[英]docker-compose identical service names in different docker-compose files collision
有 2 個服務有 2 個docker-compose.yml
文件。 這些服務通過橋接網絡連接,因此它們可以在本地進行通信。
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
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_1
的docker-compose
在其同名目錄中,並且service_2
也是如此。
運行service_1
的docker-compose
時,運行容器名稱為service_1_django
,運行service_2
的docker-compose
時,運行容器名稱為service_2_django
。
因此,為了連接這兩者,您應該在每個容器中使用這兩個名稱中的任何一個:
service_1_django
service_2_django
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.