基于 Docker 的 Gitlab 环境迁移遇坑记录
Posted 炼丹狮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于 Docker 的 Gitlab 环境迁移遇坑记录相关的知识,希望对你有一定的参考价值。
目录
因为安全需要,公司的gitlab需要从外网迁移到内网。按道理说公司的gitlab是用的docker部署,直接把原来的docker整个目录复制过来就可以,但是直接复制的会导致gitlab启动不了,中间遇到各种坑,这里记录下可能会帮助到有缘人,O(∩_∩)O哈哈~。
基础环境
操作系统:Ubuntu 18.04
容器环境:Docker version 20.10.12 / docker-compose version
Gitlab环境:Gitlab 13.7.9
(1)迁移准备工作
1.1 停掉gitlab
进入容器所在目录,停掉服务
docker-compose stop
千万可别 docker-compose down 这个将停止运行的容器,并且会删除已停止的容器以及已创建的所有网络。
1.2 拷贝giblab
scp -r ./gitlabxx user@192.168.xx.xx:/data/xx/xx
1.3 启动容器
进入拷贝后的目录,启动 gitlab
docker-compose up -d
(2)填坑
2.1 查看容器状态
查看容器状态,发现容器内部一直在重启
docker-compose ps
docker的 state 状态 一直是 starting ,通过网上搜索问题,判断应该是容器内部出了问题,进入容器
docker-compose exec gitlab bash
- 其中 gitlab 是 docker-compose 的 services 名字,
进入后通过下面命令查看gitlab的运行状态:
gitlab-ctl status
发现大量的中间件都没有启动,状态是 down ,例如下面这个:
down: alertmanager: (pid xxx) 4437s; run: log: (pid xx) 4461s
原因是容器内部文件复制过来后,导致权限错乱,因此需要重新整理下权限,重新配置下系统
2.2 重新配置权限 + 重新配置gitlab
update-permissions #重新配置权限
gitlab-ctl reconfigure #重新整理配置
gitlab-ctl restart #重启gitlab
操作完之后,会发现大部分 gitlab 的组件都已经启动,有个别的没有启动,因此需要看日志来解决
2.3 解决 gitaly 启动问题
gitlab-ctl tail | grep error # 查看错误日志
发现错误: /var/opt/gitlab/gitaly/gitaly.pid:permission denied 解决方式是赋权
cd /var/opt/gitlab/gitaly/ # 进入权限错误的目录
chmod 777 ./gitaly.pid # 修改pid的权限,网上另外的解决办法是删掉这个pid文件
gitlab-ctl restart #重启gitlab
重启gitlab后,gitaly可以正常启动
2.5 解决 rails 权限问题
查看日志发现错误 /var/opt/gitlab/gitlab-rails/sockets/gitlab.socket: connect: connection refused
解决办法是增加权限:
chmod -R o+x /var/opt/gitlab/gitlab-rails/
2.5 解决 grafana 权限问题
查看 gitlab 状态发现 grafana 还是 down,没有启动
解决办法
chown -R gitlab-prometheus:root /var/opt/gitlab/grafana/data # 修改权限
gitlab-ctl restart #重启gitlab
重启gitlab 后,发现所有组件都正常启动
访问gitlab可以正常进入,下面贴一个gitlab的架构图,大家对gitlab的各个组件有个大体了解:
GitLab 使用 nginx 将前端请求代理到 Unicorn Web 服务器。默认情况下,Unicorn 与前端之间的通信是通过 Unix domain 套接字进行的,但也支持通过 TCP 转发请求。Web 前端访问 /home/git/gitlab/public 绕过 Unicorn 服务器来提供静态页面,上传(例如头像图片或附件)和预编译资源。GitLab 使用 Unicorn Web 服务器提供网页和 GitLab API。使用 Sidekiq 作为作业队列,反过来,它使用 redis 作为作业信息,元数据和作业的非持久数据库后端。
参考文献:
[1]. https://www.cnblogs.com/kika/p/10851614.html
[2]. https://zhuanlan.zhihu.com/p/354941496
以上是关于基于 Docker 的 Gitlab 环境迁移遇坑记录的主要内容,如果未能解决你的问题,请参考以下文章
基于gitlab-ci实现maven及docker缓存的配置