在本地开发中使用Docker

我正在学习如何在基于java / spring的应用程序中使用Docker。

经过快速研究和阅读一些教程,我对在日常开发中使用Docker存在怀疑。 我不是在谈论CI或生产环境,只是在本地。

通常我运行例如使用mvn(运行目标)的embedded式Tomcat。 与docker的方法,我需要打包应用程序,重build容器,然后重新启动它(大卫Gageot在DockerCon16确认)。 乍一看,这将需要更多的时间。 每次改变时,都应该build立新的图像。

使用Docker localy的优势在哪里? 当然,我知道应用程序运行在“与生产环境相同”的环境中。

你提出了一个非常有效的观点,在你的情况下确实有一个时间的惩罚。 “工作在我的机器上”的优势来得显着,无论操作系统如何, 它都能在分级,QAtesting和生产环境中很好地工作。

我在本地使用docker进行java spring开发,但主要是为了快速和始终如一地创build构build/项目所依赖的数据库和消息传递系统。 例如,我有一个依赖于MongoDB,MySQL,ElasticSearch和RabbitMQ的应用程序。 我有这些泊坞窗图像和一个泊坞窗撰写文件,使他们全部使用一个docker,组成的命令。 这意味着我不必在笔记本电脑上手动安装这些工具,而当您移动到另一个具有不同的相关数据库,中间件等的项目时,这是一个更好的解决scheme。在从项目移动到项目之前,我必须手动停止并开始这些数据库,因为他们一直在占用大量的内存。

Docker在本地环境中也有优势,如果你的构build中有一个验收testing套件(它依赖于外部的东西,比如数据库等),同样它的主要优点是一致性,即如果它在本地运行,它应该作为你的jenkinsbuild立。

我的build议是,docker工人有很多优势,例如我们的版本现在更加可靠和可configuration,但是只有在有意义的地方才能使用 – Docker不是银弹。 例如,您可能会认为在Eclipse中运行Tomcat更好,因为debugging非常简单(不需要远程debugging会话)。