AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 995506
Accepted
Alex44
Alex44
Asked: 2019-12-14 11:42:29 +0800 CST2019-12-14 11:42:29 +0800 CST 2019-12-14 11:42:29 +0800 CST

GITLAB:将存储库从旧 gitlab 移植到基于 Docker 的 gitlab

  • 772

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

我已阅读说明并尝试了以下有关数据的方法:

  1. 我复制了以下内容:

    • /etc/gitlab
    • /var/opt/gitlab/git-data
      和 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 版本是相同的。

docker
  • 1 1 个回答
  • 298 Views

1 个回答

  • Voted
  1. Best Answer
    Alex44
    2019-12-20T07:15:57+08:002019-12-20T07:15:57+08:00

    按照 c4f4t0r 的提示,我解决了以下问题:

    1. 在 RaspberryPi 上运行旧的 Gitlab v9.2.7 并创建备份 ( Backups )。请注意,除了备份本身之外,目录/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的访问权限有关)并且存储库具有预期的内容(如果没有,问题可能与/etc/gitlab/gitlab.rb中的git-data路径设置或访问权限。)。
    3. 我将卷/var/opt/gitlab/绑定到我的主机,以便可以通过运行具有更高版本的 gitlab 容器来升级 Gitlab。请记住,只能在次要版本(更新)之间进行升级。

    ./run_gitlab.sh 9.3.0
    

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

    ./reconfigure_gitlab.sh
    

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


    run_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}
    

    restore_backup.sh

    #!/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
    

    reconfigure_gitlab.sh

    #!/bin/bash
    
    DE="docker exec -it gitlab"
    
    ${DE} gitlab-ctl stop
    ${DE} gitlab-ctl reconfigure
    ${DE} gitlab-ctl start
    
    • 0

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve