Docker喜欢数据库部署

时间:2016-02-10 13:14:10

标签: sql-server windows docker

我刚刚设置了一个开发环境,每个开发人员/ feature / ,/ bugfix / 和/ hotfix / * git分支都会自动构建并部署到新安装的Windows容器中webapp和服务创建测试环境,用于在合并到master之前验证每个分支。

虽然这很好用,但我仍然只为每个开发人员提供了1个dev db,所有分支都使用它。

在一个理想的世界中,我希望这些测试容器中的每一个都使用它们自己的隔离数据库实例,但是数据库目前大小约为50gb,我可以在不去的情况下获取它并撕掉有时候有用的历史数据。

我真正想要做的是为这个数据库创建一个类似于图像的泊坞窗,然后从这个图像中生成一个新的“容器”,它只跟踪它与原始数据库之间的差异,而不会改变原始数据库

这样的事情是否可能,或者是否有人有任何想法如何实现这个数据库隔离,每个容器而不必为每个创建一个完整的50gb数据库?

1 个答案:

答案 0 :(得分:0)

好的,所以在黑暗中大肆挥霍之后,我想我终于想出了一个解决方案。 @ErikEJ,谢谢,你让我朝着正确的方向前进。在查看MSSQL上的数据库快照之后,我发现执行可写快照的唯一方法似乎是使用vss并实际创建可写磁盘快照。这也让我走上了一条漫长的道路,一开始尝试本地化并失败,然后尝试实施iscsi并且仍然无处可去。然后我偶然发现了超级v快照,并看看那里发生了什么,并最终遇到了创建差异VHD的问题。所以基本上我的解决方案如下。

使用我的生产数据库mdf和ldf文件的清理副本创建VHD。 然后我为我需要的每个环境创建差异vhds,将差异vhds安装在他们自己的文件夹中,例如c:\ db \ Issue-1234,并通过访问这些文件夹中的文件来创建一个新的db DB_ISSUE-1234。然后只存储差异,而不是拥有几个50-60gig的db副本。我只有1然后差异vhds只存储差异。

我刚刚开始使用2或3,所以不确定它有多强大以及这些差异有多快会增长,但到目前为止看起来非常有希望并允许我在多个环境中旋转出于测试目的,非常快(实际上所有部署中的脚本都是自动化的)。

希望这可能有助于其他人节省一天的时间,如果有人想出更有效/更快/更好的方法,请告诉我:)