loca1h0st's Blog
loca1h0st's Blog

基于Docker部署Gitlab及迁移排错记录

基于Docker部署Gitlab及迁移排错记录

当仓库数量不多的情况下,可以基于本地拉取推送或从服务端直接拉取代码仓库的方式进行迁移,但在这种情况下需要用户重新申请账号和上传ssh key信息。

因之前的gitlab服务端采用docker方式部署,数据挂载在机器本地盘上,故考虑直接迁移数据的方式进行操作,迁移完成后若客户端采用域名方式访问gitlab,则此方法对客户端几乎无影响。

迁移前准备

确认两端的gitlab版本号一致:

https://blog.mrtblogs.net/wp-content/uploads/2022/06/image-3-1024x449.png

停止原服务器上的gitlab服务,并压缩相关文件夹(也可以不停止通过rsync方式增量同步),将数据传输给目标服务器(方式有很多种)。

备份文件:zip -r -q gitlab.zip /data/gitlab,中途可能会出现No such device or address的错误告警,可以进行忽略,是部分文件的软连接在镜像内的缘故。

使用scp转移文件(我这里只有原服务器对外开了SSH):

https://blog.mrtblogs.net/wp-content/uploads/2022/06/image-4-1024x127.png

解压文件:

cd /data/gitlab && unzip gitlab.zip

启动服务

以下的所有操作目录都是基准在/data/gitlab内

迁移后,修改/config/gitlab.rb文件:

  1. 修改external_url字段,从原IP地址到目标机IP地址
  2. 若有ldap认证,修改gitlab_rails['ldap_servers']

尝试启动镜像:

  1. export GITLAB_HOME=/data/gitlab
  2. docker run –detach –hostname gitlab.sc.net –publish 8443:443 –publish 880:880 –publish 822:22 –name gitlab –restart always –volume $GITLAB_HOME/config:/etc/gitlab –volume $GITLAB_HOME/logs:/var/log/gitlab –volume $GITLAB_HOME/data:/var/opt/gitlab gitlab/gitlab-ce:15.0.3-ce.0

启动后,使用docker logs container_id即可查看日志内容,也可通过docker ps查看容器的health状态:

https://blog.mrtblogs.net/wp-content/uploads/2022/06/image-5-1024x456.png

启动一段时间后,Web页面仍无法打开,查看日志和状态发现进入异常,根据提示尝试开始修复权限的问题:

https://blog.mrtblogs.net/wp-content/uploads/2022/06/image-6-1024x550.png

再等待一段时间后,成功打开首页,尝试用标准用户登录,发现仓库内容及记录均存在,服务迁移完成:

https://blog.mrtblogs.net/wp-content/uploads/2022/06/image-7-1024x403.png

后续

问题:登录后,访问具体项目提示500,查看日志内容为gitlaly提示的permission denied。

解决方案:docker exec -it gitlab /bin/bash,使用chown -R git:git /var/opt/gitlab/gitaly/解决

发表回复

textsms
account_circle
email

loca1h0st's Blog

基于Docker部署Gitlab及迁移排错记录
当仓库数量不多的情况下,可以基于本地拉取推送或从服务端直接拉取代码仓库的方式进行迁移,但在这种情况下需要用户重新申请账号和上传ssh key信息。 因之前的gitlab服务端采用docker…
扫描二维码继续阅读
2022-06-21