编辑(A)-仅使用容器进行实验

编辑(A)-仅使用容器进行实验

我在 RaspberryPi 上使用 Gitlab 已有几年了。现在我想将存储库移至基于docker的Gitlab. 所有设置均最佳。

我已经阅读指示并针对数据尝试了以下操作:

  1. 我复制了以下内容:

    • /etc/gitlab
    • /var/opt/gitlab/git-数据
      并且 gitlab 容器崩溃了......
  2. 我复制了以下内容:

    • /etc/gitlab
    • /var/opt/gitlab
      并且 gitlab 容器崩溃了......
  3. 我复制了以下内容:

    • /etc/gitlab
      并且 gitlab 容器运行...
      尽管 Gitlab 的设置位于/etc/gitlab,没有用户或组数据被转移。出现“第一个”屏幕,您应该在其中设置 root 密码等。此外,我注意到新的 Gitlab 将存储库存储在/var/opt/gitlab/git-data/repositories/@hashed/格式不正确/var/opt/gitlab/git-data/repositories/group-or-user-name/reponame.(wiki.)git像以前一样。

我的问题是:

  1. 我必须复制什么来端口用户和组设置?
  2. 如何移植存储库?
  3. 我必须复制/备份什么才能在将来恢复 GITLAB?

编辑(A)-仅使用容器进行实验

docker run \
    --detach \
    --rm \
    --name gitlab \
    --network host \
    --volume ${PWD}/etc/gitlab:/etc/gitlab \
    --volume ${PWD}/var/opt/gitlab:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

如果我使用此命令创建一个容器,使用 GITLAB 执行一些操作,然后删除该容器并启动一个新容器:这有效。在这种情况下,两个容器的 GITLAB 版本相同。

答案1

按照 c4f4t0r 的提示,我解决了这个问题,如下所示:

  1. 在 RaspberryPi 上运行旧的 Gitlab v9.2.7 并创建备份(备份)。请注意,除了备份本身之外,目录/etc/gitlab还必须单独备份。
  2. 由于恢复备份仅适用于与 GitLab 完全相同的版本和类型 (CE/EE)备份和恢复 GitLab),我创建了一个Gitlab容器gitlab/glitlab-ce:9.2.7-ce.0,并在其中恢复了备份。

    1. 我在docker主机上选择了以下文件夹结构:
    /mnt/gitlab_ws/
    ├── backups/          <-- contains timestamp_9.2.7_gitlab_backup.tar
    ├── etc/gitlab/       <-- contains gitlab.rb; gitlab-secrets.json and ssh stuf
    ├── git-data/         <-- initially empty
    └── var/opt/gitlab/   <-- initially empty
    
    1. 我在docker容器中选择了以下文件夹结构:
    /
    ├── etc/gitlab/
    ├── mnt/gitlab_ws/backups/   <-- to be set in */etc/gitlab/gitlab.rb*
    ├── mnt/gitlab_ws/git-data/  <-- to be set in */etc/gitlab/gitlab.rb*
    └── var/opt/gitlab/
    
    1. 运行 gitlab
    ./run_gitlab.sh 9.2.7
    
    1. 确保正确的写入权限。如果您在主机端设置权限,容器内的权限可能不一样。您可能需要在启动容器后设置正确的访问权限:
    docker exec -it gitlab chown -R git:git /var/opt/gitlab/ /etc/gitlab /mnt/gitlab_ws/git-data /mnt/gitlab_ws/backups
    
    1. 恢复备份
    ./restore_backup.sh
    
    1. 检查 Gitlab 是否正常运行,显示所有存储库和用户(如果没有,则问题可能与访问权限有关/etc/gitlab)并且存储库具有预期的内容(如果没有,则问题可能与git 数据路径设置在/etc/gitlab/gitlab.rb或访问权限。)
  3. 我限制了音量/var/opt/gitlab/到我的主机,以便能够通过运行更高版本的 gitlab 容器来升级 Gitlab。请记住,升级只能在次要版本之间进行(更新)。

./run_gitlab.sh 9.3.0

启动更高级别的 gitlab 后(容器状态变为“健康” - 这可能需要一些时间)您现在应该重新配置 gitlab:

./reconfigure_gitlab.sh

从现在起,您可以重复最后两个步骤,直到达到您想要的版本。您也可以自动执行此操作 ;)


运行_gitlab.sh

#/bin/bash

GITLAB_WS_PATH='/mnt/gitlab_ws'

if [ $# -eq 0 ]
then
        TAG='latest'
else
        TAG=$1-ce.0
fi

docker run \
        --name gitlab \
        --detach \
        --restart always \
        --network host \
        --volume $GITLAB_WS_PATH/git-data/:/mnt/gitlab_ws/git-data \
        --volume $GITLAB_WS_PATH/var/opt/gitlab:/var/opt/gitlab \
        --volume $GITLAB_WS_PATH/etc/gitlab:/etc/gitlab \
        --volume $GITLAB_WS_PATH/backups:/mnt/gitlab_ws/backups \
        gitlab/gitlab-ce:${TAG}

恢复备份

#!/bin/bash

DE="docker exec -it gitlab"

${DE} gitlab-ctl stop unicorn
${DE} gitlab-ctl stop sidekiq
${DE} gitlab-rake gitlab:backup:restore
${DE} gitlab-ctl reconfigure
${DE} gitlab-ctl restart

重新配置_gitlab.sh

#!/bin/bash

DE="docker exec -it gitlab"

${DE} gitlab-ctl stop
${DE} gitlab-ctl reconfigure
${DE} gitlab-ctl start

相关内容