2016-08-18 30 views
1

我正在學習如何在基於java/spring的應用程序中使用Docker。在本地開發中使用Docker

經過快速研究和閱讀一些教程後,我對在日常開發中使用Docker存在懷疑。我不是在談論CI或生產環境,只是在本地。

通常我運行例如使用mvn(運行目標)嵌入Tomcat。使用docker方法,我需要打包應用程序,重建容器然後重新啓動它(DockerCon16的David Gageot證實了這一點)。乍一看它需要更多時間。每次進行更改時,都應該建立新的圖像。

使用Docker localy的優勢在哪裏?當然,我知道應用程序「在與生產環境相同的環境中」運行。

回答

7

你提出了一個非常有效的觀點,在你的場景中確實有時間處罰。當「它在我的機器上工作」時,它應該在分級,QA測試和生產環境中很好地工作,而不管操作系統如何。

我在本地爲我的java spring開發使用docker,但主要是爲了快速一致地創建構建/項目所依賴的數據庫和消息傳遞系統。例如,我有一個依賴於MongoDB,MySQL,ElasticSearch和RabbitMQ的應用程序。我爲每一個Docker圖像和一個Docker組合文件使用單個docker-compose up命令將它們全部提起。這意味着我不必在筆記本電腦上手動安裝這些設備,而當您轉移到另一個具有不同相關數據庫,中間件等的項目時,它將成爲一個更好的解決方案。在從項目移至項目之前,我必須手動停止並啓動這些數據庫,因爲它們一直在佔用大量內存。

如果在構建中有一個驗收測試套件(它依然取決於數據庫等外部事物),則Docker在本地環境中也具有優勢 - 同樣它的主要優勢仍然是一致性,即如果它在本地運行,它應該作爲Jenkins構建的一部分運行。

我的建議是,docker有一些優勢。我們的版本現在更加可靠和可配置,但只有在它有意義的地方使用它 - Docker不是銀彈。例如。您可能會認爲在Eclipse中運行Tomcat會更好,因爲調試非常簡單(不需要遠程調試會話)。