场景:原来的gitlab是使用ubuntu自带的apt安装的,已经使用了半年多,最后在阿里云的轻量级服务器上终于有些抗不住了,一天死好多次,连网站都进不去。
决定将gitlab迁移到内网,在物理机上运行。
刚好,原来通过apt安装的方式不好作云部署,我们组未来可能要上k8s,所以这里直接用docker来接盘gitlab,也是为了学习实践docker,docker也更加方便管理。
第一步:备份
数据是最重要的,迁移一定要万分小心,不要弄丢了代码库!
如果是apt安装的gitlab可以直接使用如下命令进行备份
gitlab-rake gitlab:backup:create
一般来说如果是apt安装的gitlab可以在/var/opt/gitlab/backups/
下找到生成的backup文件,保存好这个文件,一会恢复用。除了这个备份文件外,另外建议保存data下两个文件:gitlab.rb
和 gitlab-secrets.json
,其中gitlab.rb也可能是/etc下的,我一般配置etc下的。
第二步:Docker安装gitlab
直接使用docker-compose安装:
新建一个文件夹docker,新建文件docker-compose.yml,编辑:
version: '2'
services:
gitlab:
image: 'gitlab/gitlab-ce:13.2.2-ce.0'
restart: unless-stopped
container_name: 'gitlab'
hostname: 'w2.iict.cn'
ports:
- '81:80'
- '444:443'
- '23:22'
volumes:
- /docker/gitlab/config:/etc/gitlab
- /docker/gitlab/data:/var/opt/gitlab
- /docker/gitlab/logs:/var/log/gitlab
在这里,将docker内目录gitlab映射到docker外物理机上:/docker/gitlab/。
所以我们要把第一步中备份的三个文件分别归位,放在/docker/gitlab/data下的对应位置。
并且为了避免冲突,这里把docker内端口映射到了物理机分别:“+1”
使用 docker-compose up
运行起来
第三步:还原数据库
这一步必须在docker gitlab启动的情况下!
docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1608272828_2020_12_18_13.2.2 --trace
这里BACKUP变量后面的是备份文件去除了后缀
启动
docker-compose up
# 或
docker-compose start
gitlab启动较慢,清等待到现实页面。
一些配置
所有的配置都在 /docker/gitlab/config
下,主要是gitlab.rb文件,external_url要配置成和访问地址,反向代理,外网一样的网址,这在git clone时会用到
关于升级
如果直接在gitlab-compose使用latest版本,而这个latest版本比你的backup版本新的话,是会报一个版本不匹配错误的,这个时候应该遵循backup版本,先使用对应的版本的gitlab。
等到全部安装完成,并且正常启动gitlab后,就可以修改docker-compose下的gitlab版本为latest,当然版本跨越不能太大,大版本之间不兼容的。