2015-07-02 47 views
0

我們正在開發一個相當複雜的應用程序,它有一個節點服務器與CouchDB實例對話,另一個節點服務器與Redis實例對話,第三個節點服務器與兩個其他節點服務器對話,和所有三個人都在談論的Redis商店。在docker中運行一個生態系

本地開發需要安裝並運行CouchDB,兩個redis實例和三個節點應用程序。這確實不是問題,但我們希望開發人員能夠進入項目並立即開始開發,而不會有太大的障礙。我想創建一個Docker容器來運行所有這些事情,以便他們可以構建並運行它並開始開發,而不會有任何問題。

我在閱讀Docker best practices文檔,它提到您應該只運行一個一個每個容器的進程 - 實際上我們有六個進程。它建議使用相關服務容器聯太,但在這種情況下,它好像你仍然需要六個獨立的碼頭工人集裝箱/實例,並且有自己的運行他們每個人,然後將它們鏈接。我想進一步簡化這一點。

是否有創建多個DockerFiles的回購協議的標準,這些DockerFiles都是相互交互的。有沒有簡單的方法可以同時鏈接,運行和構建它們?這是一個好主意,還是使用supervisor在一個容器中運行所有這些流程會更好?

+0

幾個月前,我看到這個視頻(https://www.youtube.com/watch?v=Glk5d5WP6MI)關於'碼頭在生產',它給了我一些想法 –

回答

1

你想要的是Docker-Compose(以前的圖),它可以讓你編排創建和鏈接多個容器。還有其他方法可以做到這一點,但Compose是獲得最多關注的「官方」方式。

你可以基本上創建你想要的並且爲你處理鏈接,所以一個簡單的「docker-compose up -d」和「docker-compose stop」將是你的開發者需要獲得的大部分內容去。

至於管理多個Dockerfiles,一旦構建它們,您應該將它們提交到Docker Hub。從那裏,您的docker-compose.yml可以將每個圖像下拉到開發者機器。你也可以重新使用官方倉庫,而不是編寫自己的Dockerfiles,只需使用通過Compose傳入的ENV變量來定製它們即可。例如,Official Redis Image甚至可以接受,而不需要自己的自定義圖像/容器定製redis.conf文件。

+0

這太棒了。我們迄今遇到的唯一障礙是節點應用程序都來自私人git回購站。任何建議通過Dockerfile安裝repos?我認爲開發者可以通過安裝來編輯內容,但在這方面還有什麼我應該注意的? –

+0

在當你想要的內容爲可編輯的發展,你會一般運行只依賴一個容器,然後從本地系統卷裝入應用程序代碼。這樣,開發人員可以使用通常的工具和環境進行更改,Docker容器將實時查看這些更改。 – CashIsClay