[英]Multiple docker networks on a single container
我有一個名為traefik
的覆蓋網絡的traefik
堆棧配置。 它包含我的traefik
反向代理容器,然后包含服務各個子域的幾個容器。 我要添加一個新文件,它需要訪問在另一個容器中創建的數據庫服務器,因此我添加了以下內容:
networks:
traefik:
driver: overlay
database:
driver: overlay
services:
traefik:
image: traefik
networks:
- traefik
ports:
- 80:80
- 443:443
- 8080:8080
volumes:
# ...
# ...
database:
image: postgres:9.6-alpine # match what's being used by heroku
networks:
- database
staging:
image: staging
networks:
- traefik
- database
deploy:
labels:
traefik.enable: "true"
traefik.frontend.rule: Host:lotto-ticket.example.com
traefik.docker.network: traefik
traefik.port: 3000
當我這樣做時,反向代理開始返回網關超時代碼,這表明staging
容器對於traefik
網絡不再可用。 如果我從staging
容器中刪除database
網絡,則該子域將按預期運行(盡管它顯然無法訪問數據庫),並且當我重新添加它時,反向代理會開始從中獲取超時。
兩個網絡之間是否存在某種沖突? 我是否需要配置IP路由才能在單個容器上使用多個docker網絡?
編輯:添加更多細節到配置摘錄
您需要使用標簽traefik.docker.network
告訴traefik在哪個網絡上連接到您的服務。 在您的情況下,該標簽將設置為${stack_name}_traefik
,其中${stack_name}
是堆棧的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.