2017-08-17 201 views
0

我有一個角度的應用程序與快遞服務器進行通信。我已將角度應用程序鏈接到快速服務器。我可以ping角度容器內的鏈接,但在代碼中使用時顯示錯誤。訪問鏈接與泊塢窗撰寫

泊塢撰寫文件

myexpress: 
    build: express-server 
    links: 
     - "mymongodb:mongo" 
    ports: 
     - "8080:3000" 
    angular: 
    build: angular 
    links: 
     - "myexpress:express" 
    ports: 
     - "4200:4200" 

我可以在http://localhost:4200/訪問應用程序。 HTTP調用的代碼片段:

return this.http.post('http://express:3000/signup', body, {headers: headers}) 
     .map((response: Response) => response.json()) 
     .catch((error: Response) => Observable.throw(error.json())); 

控制檯顯示以下錯誤: enter image description here

如何從角容器訪問該鏈接?

+0

嘗試http:// myexpress並刪除鏈接塊。 –

+0

它的修改仍然一樣。我使用了'ping express',我得到了輸出。它必須是別的東西。 –

回答

1

容器之間的通信通過它們的主機名進行。默認情況下服務名稱被認爲是主機名,因此您應該使用http://myexpress:3000連接到myexpress

另外,您可以分別指定主機名。更多詳情here

+0

即使將請求更改爲「http:// myexpress:3000/signup」,我也會收到錯誤。錯誤說:'net :: ERR_NAME_NOT_RESOLVED' –

+0

使用主機名稱,這將驅除所有的困惑 – Ayushya

+1

我已經通過使角度和表達到單個容器中解決了問題。 –

0

我認爲您在撰寫文件中缺少container_name選項。

myexpress: 
    build: express-server 
    container_name: myexpress 
    links: 
     - "mymongodb:mongo" 
    ports: 
     - "8080:3000" 
angular: 
    build: angular 
    links: 
     - "myexpress:express" 
    ports: 
     - "4200:4200" 
+0

我已經嘗試過,但它不能解決錯誤。我有一些其他容器以相同的方式鏈接。所以它一定是別的。 –