2016-09-30 113 views
1

使用docker-compose,我試圖在公共可用端口8080上運行我的API,在私有端口9324上運行sqs服務。API需要能夠與平方米的服務。爲了做到這一點,我已經設置了以下泊塢窗,compose.yml:Docker撰寫 - 容器接收連接被拒絕

version: '2' 
services: 
    api: 
    image: api 
    ports: 
     - "8080:8080" 
    sqs: 
    image: pakohan/elasticmq 

我已經試過幾次迭代,包括添加一個鏈接別名API:

links: 
    - "sqs:localhost" 

並露出端口爲平方:

ports: 
    - "9324:9324" 

但似乎都沒有工作。嘗試與sqs服務進行通信時,API始終會收到拒絕連接錯誤。

當sqs端口公開暴露時,在docker外部運行的API能夠正常通信(所以sqs服務已正確初始化)。

有沒有人有任何想法如何解決這個問題?

回答

6

試圖欺騙api容器連接到sqs告訴它,它實際上連接到localhost是行不通的。你需要讓sqs可供api下一個名不已經有特殊的含義,如:

links: 
    - sqs:original-name 

甚至:

links: 
    - sqs 

這使得sqs訪問api的名義下「 sqs「。

然後,當然,你需要告訴api它應該連接到的original-name端口9324或sqs代替localhost端口9324。你怎麼做取決於api究竟是什麼。