2017-09-01 41 views
0

我正在嘗試安裝一個由多個與Docker協作的微服務構建的項目。這裏是我的項目的簡化模式:自帶微型服務與Docker

- Main-project 
    - Dockerfile 
    - docker-compose.yml (bundles Microservice1 and Microservice2) 

- Microservice1 
    - Dockerfile 

- Microservice2 
    - Dockerfile 

現在,每個組件有許多相關性,如通過的RabbitMQ泊塢窗,compose.yml文件管理。我設法通過使用撰寫文件來使整個項目在Docker上運行。

但是,我在單獨運行各個組件時遇到問題。問題是Microservice1依賴於rabbitMQ,但它沒有一個組合文件來管理這種依賴關係,並且所有其他組件也是如此。所以當我嘗試自己運行任何單個組件時(例如對於單元測試),我有一個缺少依賴關係的問題。

我是否應該在每個組件的Dockerfile上添加所有依賴關係? 我應該爲每個組件創建一個docker-compose文件嗎? 建立這樣一個系統的最佳實踐是什麼?

非常感謝!

更新:

作爲一個重要的注意,我忘了提,每個微服務都有自己的回購協議。

+0

你如何單獨運行它們?使用碼頭運行? – sergiu

+0

到目前爲止,我還沒有能夠單獨運行它們。這正是我的問題。我不知道是否將所有依賴項添加到Dockerfile或爲每個依賴項創建一個組合文件。 –

+0

什麼是用例?我的意思是......這兩項服務都在碼頭集裝箱內?它是否介意你們都開始? – sergiu

回答

2

確實,微服務必須是自包含的,這意味着它可以在沒有其他微服務的情況下部署和擴展。但通常需要dbms或消息代理或緩存系統才能開始運行。這就是爲什麼大多數CI系統(如Gitlab CIDrone或Jenkins)都具有在執行單元測試之前啓動其他服務的功能。如果你沒有使用任何CI,那麼每個組件都有合成文件是明智的。