2016-02-26 31 views
5

在我的碼頭工人,撰寫:如何在鏈接到容器時使用主機網絡?

laravel: 
    image: trackware 
    links: 
     - postgis:postgis 
    ports: 
     - "80:80" 
     - "3306:3306" 
     - "443:443" 
     - "220:22" 
     - "8000:8000" 
    net: "host" 
    restart: always 
    volumes: 
     - C:/H/repositories/pubnub:/share 
    container_name: laravel 

postgis: 
    image: mdillon/postgis 
    env_file: .postgis_env 
    ports: 
     - "9090:9000" 
     - "54320:5432" 
    container_name: postgis 

,如果我跑docker-compose up -d我得到這個錯誤:

Conflicting options: host type networking can't be used with links. This would result in undefined behavior 

所以,我會怎麼用net: "host"同時鏈接到PostGIS的容器? laravel容器需要運行pubnub客戶端,這將需要高性能網絡來處理實時消息,並且它還需要鏈接到postgis容器才能訪問db。

那麼,有什麼建議嗎?我正在使用docker 1.10.2

+0

是否有任何需要考慮的PubNub相關?看起來不像有,但我想問問。 –

+1

不,這裏沒有任何關係到PubNub – simo

+0

你可能想從這個問題中刪除laravel標籤,因爲它似乎是一個普通的碼頭問題 – BSchlinker

回答

5

由於您將postgis端口暴露給主機,您可以跳過鏈接並通過localhost:9000連接到它。我相信這會工作,因爲laravel應用程序駐留在主機網絡,他們將共享這些端口。

+0

我試圖將django容器連接到127.0.0.1上的postgis容器,但它只適用於本地主機。 –

0

我不知道原因,但...你不應該使用「主機」驅動程序和端口映射,至少你不會得到預期的結果。在像這樣的「220:22」的情況下,你會得到22端口映射到主機。

據我所知,「Net」已過時,請使用「network_mode」代替。 另外,我會建議你更新碼頭撰寫到最新版本,現在是1.6.2。以前的版本有一些網絡問題。

可能您可以使用「bridge」驅動程序?在你的情況下,我看不到它無法解決的問題。

+0

我如何在Windows上更新docker-compose?如何將docker-compose文件轉換爲版本2? – simo

+0

對不起,不確定Windows。嘗試運行[工具箱](https://www.docker.com/products/docker-toolbox)並選中「docker-compose」框。 關於轉換撰寫文件,在你的情況下,只需添加版本和服務部分。這裏更多關於[link](https://docs.docker.com/compose/compose-file/) – SLY

相關問題