我正在使用GitLab docker镜像对我正在帮助开发的服务进行集成测试。理想情况下,图像将是GitLab的预配置快照,具有不同的用户和可用于运行测试的repos。所以最终的问题是,什么是自动创建GitLab的“快照”(然后可以进行版本控制等)的好方法?
我目前解决此问题的方法是在将GitLab置于我想要的状态后,通过gitlab-rake gitlab:backup:restore
使用GitLab的内置备份实用程序。然后,当容器启动时,我可以在挂钩中使用GitLab的ADD
,以使容器恢复到我期望的状态(备份在Dockerfile中为docker export
编写了图像)。这样做的优点是相对轻量级(备份大小为MB),备份可以签入版本控制。
我尝试使用docker import
和<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>org.continuous.Integration</groupId>
<artifactId>Continuous-Integration</artifactId>
<versioning>
<versions>
<version>1.11-SNAPSHOT</version>
<version>1.12-SNAPSHOT</version>
<version>1.13-SNAPSHOT</version>
<version>1.14-SNAPSHOT</version>
<version>1.15-SNAPSHOT</version>
..
..
..
..
<version>1.N-SNAPSHOT</version>
</versions>
<lastUpdated>20161220194944</lastUpdated>
</versioning>
</metadata>
来保存容器的状态,然后根据该状态创建图像。这具有易于自动化的优点,因为它直接由Docker支持,但考虑到目标是什么(让用户和repos可用于测试),最终会相当昂贵。它还需要将图像推送到某种注册表以便于分发。也许这是最好的解决方案,因为它得到了很好的支持。
我想我的问题是,Docker解决这类问题的方式是什么?