【Gitlab-CE】Docker中部署
本文介绍了如何在服务器 Centos7 上使用 Docker 搭建 Gitlab-CE。
老系统备份
首先需要登录网页查看当前的Gitlab版本,看到的是 13.11.1
然后切换到root
1
2sudo passwd root
su然后修改备份路径
1
2
3# 创建备份用的目录
mkdir -p /mnt/remote/gitlab_ce/bak_szc
vim /etc/gitlab/gitlab.rb找到
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
取消注释,然后后面的路径修改为/mnt/remote/gitlab_ce/bak_szc
停止服务
1
gitlab-ctl stop
将相关文件移动过去
1
mv /var/opt/gitlab/backups/* /mnt/remote/gitlab_ce/bak_szc/
然后应用配置并重启服务
1
2gitlab-ctl reconfigure
gitlab-ctl start然后备份数据
1
gitlab-rake gitlab:backup:create
备份的结果在文件夹:/mnt/remote/gitlab_ce/bak_szc
备份配置文件和认证文件
1
2cp /etc/gitlab/gitlab.rb /mnt/remote/gitlab_ce/bak_szc/211222_gitlab.rb
cp /etc/gitlab/gitlab-secrets.json /mnt/remote/gitlab_ce/bak_szc/211222_gitlab-secrets.json备份完成
新系统
安装 Docker
设置 Docker 的保存路径
设置 Docker 代理
预先拉取镜像
1
docker pull gitlab/gitlab-ce
运行
1
2
3
4
5
6
7
8
9
10docker run -d \
--hostname hostname.com \
--publish 443:443 --publish 80:80 --publish 222:22 \
--name gitlab \
--restart always \
--volume gitlab_config:/etc/gitlab \
--volume gitlab_logs:/var/log/gitlab \
--volume gitlab_data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:13.11.1-ce.0这里指定老版本是因为我下面要恢复之前服务器的文件,官方要求必须使用相同版本的。
查看实时日志
启动时间较长,可以看看当前状态
1
docker logs -f gitlab
通过浏览器访问
将之前备份的数据包使用 scp 下载到 docker挂载的卷宗的备份文件夹中,移动完成后路径是
gitlab_data/_data/backups/1643015420_2022_01_24_13.11.1_gitlab_backup.tar
1
2
3
4
5
6
7
8# 赋权限
chmod 777 gitlab_data/_data/backups/1643015420_2022_01_24_13.11.1_gitlab_backup.tar
# 进入容器
docker exec -i -t gitlab /bin/bash
# 容器内操作
gitlab-rake gitlab:backup:restore BACKUP=1643015420_2022_01_24_13.11.1
# 操作完成,退出容器
exit这需要漫长的时间,可以再开个终端,先进行第十步的拉取镜像操作。
将之前备份的配置恢复
1
2
3
4
5
6
7
8
9
10
11cd gitlab_config/_data
# 备份一下默认的配置文件 和 secrets 文件
mv gitlab.rb gitlab.rb_bak
mv gitlab-secrets.json gitlab-secrets.json_bak
# 将两个文件直接放到相应的目录就可以了
mv 211222_gitlab.rb gitlab.rb
mv 211222_gitlab-secrets.json gitlab-secrets.json
chmod 777 gitlab.rb
chmod 777 gitlab-secrets.json1
2
3
4
5
6# 进入容器
docker exec -i -t gitlab /bin/bash
gitlab-ctl reconfigure
gitlab-ctl restart
gitlab-rake gitlab:check SANITIZE=true
gitlab-rake gitlab:doctor:secrets然后就是更新Gitlab,参考 官方升级线路
我的是 13.11.1 -> 13.12.15 -> 14.0.11 -> 14.1.8 -> 14.2.6
1
2
3
4docker pull gitlab/gitlab-ce:13.12.15-ce.0
docker pull gitlab/gitlab-ce:14.0.11-ce.0
docker pull gitlab/gitlab-ce:14.1.8-ce.0
docker pull gitlab/gitlab-ce:14.2.6-ce.0升级步骤:
- 确保可以正常访问,且所有资源可以访问后,批处理任务完成后
- 进入当前实例,运行 gitlab-ctl stop 停止服务,然后退出
- 把当前的 gitlab 实例删掉
- 启动下一个版本
- 回到第一步,直到最新版本
如何检查当前版本升级成功?
- 登录网页端
- 进入管理员设置
- Monitoring(监控) > Background Migrations(后台迁移)
- 等待列表中所有任务都完成。
请注意 更新到 GitLab 14.2 或更高版本时,可能会出现数据库迁移失败并显示如下消息:
1
2
3
4StandardError: An error has occurred, all later migrations canceled:
Expected batched background migration for the given configuration to be marked as 'finished', but it is 'active':
{:job_class_name=>"CopyColumnUsingBackgroundMigrationJob", :table_name=>"push_event_payloads", :column_name=>"event_id", :job_arguments=>[["event_id"], ["event_id_convert_to_bigint"]]}这是因为上一个版本的迁移工作尚未完成导致的,重新启动上一个版本,然后等待所有任务都完成后再进行升级 官方参考链接。
【Gitlab-CE】Docker中部署