我在 RaspberryPi 上使用 Gitlab 已有几年了。现在我想将存储库移至基于docker的Gitlab. 所有设置均最佳。
我已经阅读指示并针对数据尝试了以下操作:
我复制了以下内容:
- /etc/gitlab
- /var/opt/gitlab/git-数据
并且 gitlab 容器崩溃了......
我复制了以下内容:
- /etc/gitlab
- /var/opt/gitlab
并且 gitlab 容器崩溃了......
我复制了以下内容:
- /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像以前一样。
- /etc/gitlab
我的问题是:
- 我必须复制什么来端口用户和组设置?
- 如何移植存储库?
- 我必须复制/备份什么才能在将来恢复 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 的提示,我解决了这个问题,如下所示:
- 在 RaspberryPi 上运行旧的 Gitlab v9.2.7 并创建备份(备份)。请注意,除了备份本身之外,目录/etc/gitlab还必须单独备份。
由于恢复备份仅适用于与 GitLab 完全相同的版本和类型 (CE/EE)(备份和恢复 GitLab),我创建了一个Gitlab容器
gitlab/glitlab-ce:9.2.7-ce.0
,并在其中恢复了备份。- 我在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
- 我在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/
- 运行 gitlab
./run_gitlab.sh 9.2.7
- 确保正确的写入权限。如果您在主机端设置权限,容器内的权限可能不一样。您可能需要在启动容器后设置正确的访问权限:
docker exec -it gitlab chown -R git:git /var/opt/gitlab/ /etc/gitlab /mnt/gitlab_ws/git-data /mnt/gitlab_ws/backups
- 恢复备份
./restore_backup.sh
- 检查 Gitlab 是否正常运行,显示所有存储库和用户(如果没有,则问题可能与访问权限有关/etc/gitlab)并且存储库具有预期的内容(如果没有,则问题可能与git 数据路径设置在/etc/gitlab/gitlab.rb或访问权限。)
我限制了音量/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