恢复Gitlab Docker设置



我正在尝试恢复Gitlab备份。安装是使用Docker容器完成的。使用的Gitlab版本为gitlab-ce:10.7.3-ce.0。我经常从以下文件夹中备份:

  • /etc/gitlab/
  • /var/log/gitlab/
  • /var/opt/gitlab/

要运行Gitlab Docker容器,我使用了这个BASH命令:

sudo docker run --detach 
--hostname gitlab.exampledomain.com 
--publish 8081:80 
--name gitlab 
--restart always 
--volume /srv/gitlab/config:/etc/gitlab 
--volume /srv/gitlab/logs:/var/log/gitlab 
--volume /srv/gitlab/data:/var/opt/gitlab 
gitlab/gitlab-ce:10.7.3-ce.0
为了创建备份,我使用了以下命令:
#!/bin/bash
# Turn off Gitlab.
sudo docker stop gitlab
# Backup Gitlab to tars.
sudo docker run --name temp-gitlab-backup-os 
-it 
-v /srv/gitlab/config:/etc/gitlab 
-v /srv/gitlab/logs:/var/log/gitlab 
-v /srv/gitlab/data:/var/opt/gitlab 
-v $(pwd):/backup ubuntu:16.04 sh -c "tar -cvzf /backup/gitlab.tar.gz /etc/gitlab /var/log/gitlab /var/opt/gitlab"
# Delete temp container.
sudo docker rm temp-gitlab-backup-os
# Delete temp image.
sudo docker rmi ubuntu:16.04
# Turn on Gitlab.
sudo docker start gitlab

为了将备份导入到一个空的Gitlab Docker容器中,我使用了以下命令:

#!/bin/bash
# Turn off Gitlab.
sudo docker stop gitlab
# Import Gitlab backup.
sudo docker run --name temp-gitlab-backup-os 
-it 
-v /srv/gitlab/config:/etc/gitlab 
-v /srv/gitlab/logs:/var/log/gitlab 
-v /srv/gitlab/data:/var/opt/gitlab 
-v $(pwd):/backup ubuntu:16.04 sh -c "tar -xvzf /backup/gitlab.tar.gz"
# Delete temp container.
sudo docker rm temp-gitlab-backup-os
# Delete temp image.
sudo docker rmi ubuntu:16.04
# Turn on Gitlab.
sudo docker start gitlab

现在,我想再次访问系统。因此,我创建了Gitlab Docker容器,然后在上述三个文件夹中解压缩备份。如果我然后运行Gitlab Docker容器,它会不断关闭和重新启动,阻止我进行任何访问。我所有的项目都在这个Gitlab Docker备份上,我真的想重新获得访问权限。

  • 是否有任何方法可以从提到的备份文件夹中找出使用的Gitlab Docker容器版本,以验证它实际上与版本gitlab-ce:10.7.3-ce.0一起运行?
  • 是否有任何方法我可以访问我的项目在提到的备份文件夹?数据在那里,但目前我不知道如何导出我的项目。

1

是否有任何方法可以从提到的备份文件夹中找到使用的Gitlab Docker容器版本,以验证它实际上与版本Gitlab -ce:10.7.3-ce.0一起运行?

是的,您可以使用docker logs <container name>来显示容器的所有日志输出,并将其管道到head以仅显示前10行,这是我的容器的输出:

> docker logs gitlab-wiki | head
Thank you for using GitLab Docker Image!
Current version: gitlab-ce=10.7.3-ce.0
/opt/gitlab/embedded/bin/runsvdir-start: line 37: /proc/sys/fs/file-max: Read-only file system
Configure GitLab for your system by editing /etc/gitlab/gitlab.rb file
And restart this container to reload settings.
To do it use docker exec:
docker exec -it gitlab vim /etc/gitlab/gitlab.rb
docker restart gitlab
write /dev/stdout: The pipe is being closed.

可以看到,第二行打印了gitlab版本。

<标题>2 h1> p>有什么方法我可以访问我的项目在提到的备份文件夹?数据在那里,但目前我不知道如何导出我的项目。

是的,因为你已经备份了你的数据,你可以克隆你的git仓库而不需要docker。

首先,提取备份文件:

tar zxvf /backup/gitlab.tar.gz

所有的repo应该位于:

var/opt/gitlab/git-data/repositories/<namespace>/<repo>.git

但是这些repos是bare repository,你不能直接使用它们。您需要通过以下命令克隆它:

git clone var/opt/gitlab/git-data/repositories/foo/bar.git foobar

最后,我认为你应该按照官方文件,使用gitlab-rake gitlab:backup:creategitlab-rake gitlab:backup:restore来备份&恢复。直接复制文件不是个好主意。

最新更新