以源码搭建的gitlab为例,版本9.5.2:
- 首先,docker save保存postgresql、redis、gitlab3个镜像,进入gitlab docker的/home/git/gitlab/bin目录,运行“./rake gitlab:backup:create CRON=1”命令备份数据,会在/home/git/data/backups目录下生成一个以时间戳命名的tar包
- 接着,copy 3个save保存的镜像到恢复服务器,docker load加载postgresql、redis、gitlab3个镜像,docker run运行3个镜像或者配置docker-compose.yml文件,然后docker-compose运行3个镜像,这里假设postgresql绑定到宿主机/data/docker/gitlab/postgresql目录,redis绑定到宿主机/data/docker/gitlab/redis目录,gitlab绑定到宿主机/data/docker/gitlab/gitlab目录,目录也可以自定义
- 恢复过程:
- 方法一:也就是利用前面备份的tar包
- 复制备份tar包到恢复服务器/data/docker/gitlab/gitlab/backups目录,进入gitlab docker的/home/git/gitlab/bin目录,运行“./rake gitlab:backup:restore BACKUP=tar名称 force=yes”命令恢复数据,这里需要耐心等待一会儿,之后就会提示成功,如果有postgresql权限问题,进入docker修改一下
- 恢复完成后,重启gitlab就可正常登陆了
- 方法二:这里不需要前面备份的tar包,直接copy docker数据目录(3个docker哦)到恢复服务器对应的数据目录(即/data/docker/gitlab/postgresql,/data/docker/gitlab/redis,/data/docker/gitlab/gitlab这3个目录),然后重启gitlab即可
需要注意的是:恢复服务器的gitlab的/home/git/data/等目录权限必须为git用户的,不然仓库的代码会看不到。