【问题标题】:Recover Gitlab Docker setup恢复 Gitlab Docker 设置
【发布时间】:2022-09-29 14:51:11
【问题描述】:

我正在尝试恢复 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 运行的吗?
  • 有什么方法可以访问我提到的备份文件夹中的项目?数据在那里,但目前我不知道如何导出我的项目。

    标签: docker gitlab gitlab-ci


    【解决方案1】:

    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

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

    是的,因为你已经备份了你的数据,你可以在没有 docker 的情况下克隆你的 git repo。

    首先,提取您的备份文件:

    tar zxvf /backup/gitlab.tar.gz
    

    您的所有回购应位于:

    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进行备份和恢复。直接复制文件不是一个好主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      相关资源
      最近更新 更多