Docker如何有效地用于开发?

时间:2018-05-05 14:40:32

标签: docker docker-compose

我正在尝试使用Docker,在Go中编写应用程序,我正在容器中构建/运行它。我正在使用Docker Compose将其拼接到数据库中,并且我传入了环境变量。

问题是,为了查看我的更改,我必须重建Docker镜像。这需要一段时间,因为它每次都会重新下载Go包。

这是否意味着Docker更适合部署而不是开发?

2 个答案:

答案 0 :(得分:0)

嗯,这取决于您使用Docker的问题。

Docker是一个很棒的工具,可以提供环境虚拟化和图像分发。这有助于部署和持续集成过程。

因此,如果您在团队中工作并且需要相同的环境来处理,那么它在开发中可能很有用。

答案 1 :(得分:0)

你的问题中存在一些误解,值得重新审视以充分利用Docker。

  

为了查看我的[开发]更改,我必须重建Docker镜像

一种流行的开发方法是使用一个特殊的启动shell脚本来执行docker run(或docker-compose up命令),该脚本创建映射到开发计算机磁盘的卷。这允许您在本地计算机上进行更改,它们将立即反映在正在运行的容器中。

这样,您就不必重建机器,甚至不必重新启动它。当然,当您转移到UAT或暂存时,您将不得不重建您的映像,并且它不会将这些卷映射到主机。

  

每次都重新下载Go包

这听起来好像你的Docker层缓存有问题。如果使用正确,您的Dockerfile应该允许您从之前的版本中快速重建图像,除非:

  • 项目中的相关文件已更改,或
  • Dockerfile中的一行或前一行已更改

这可能值得在一个单独的线程中解决。