1、docker安装

# 更新软件库索引
sudo apt update -y

# 安装一些必要的软件包
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

# 添加Docker的官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加Docker软件库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 再次更新软件库索引
sudo apt update

# 安装Docker CE
sudo apt install docker-ce -y

# 启动Docker并设置开机启动
sudo systemctl start docker
sudo systemctl enable docker

# 验证Docker安装
sudo docker --version

# (若要让非root用户可以运行Docker命令)可以将用户添加到docker组:
sudo usermod -aG docker ${USER}

# 编辑docker配置文件(添加代理镜像或修改文件存储位置)
sudo vi /etc/docker/daemon.json

添加如下内容

{
"registry-mirrors": ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"]
}
# 重新加载配置docker
sudo systemctl daemon-reload
# 重启
sudo systemctl restart docker

2、安装容器

# 拉取指定版本镜像
sudo docker pull gitlab/gitlab-ce:17.11.1-ce.0
#安装镜像
sudo docker run -d \
  -p 443:443 \
  -p 8822:22 \
  -p 8890:80 \
  --name gitlab17.11.1\
  --restart always \
  --shm-size=120g \  
  -v /home/gitlab17.11.1/config:/etc/gitlab \
  -v /home/gitlab17.11.1/logs:/var/log/gitlab \
  -v /home/gitlab17.11.1/data:/var/opt/gitlab \
  gitlab/gitlab-ce:17.11.1-ce.0 

在安装完成后,若页面经常出现500、502错误,经排查,是因为在安装时容器中dev/shm磁盘内存不足导致,所以设置–shm-size=120g进行扩容

docker exec -it gitlab17.11.1 /bin/bash

# 修改用户密码
# 进入GitLab Rails 控制台
sudo gitlab-rails console -e production

# 查询所有用户
User.all.each { |user| puts "Username: #{user.username}, Email: #{user.email}" }

# 查找 root 用户(通常 id 是 1)
user = User.find_by(username: 'root')
# 或者通过 id 查找
# user = User.find(1)

# 方式一:直接修改密码(会要求确认)
user.password = '您的新密码'
user.password_confirmation = '您的新密码'

# 方式二:如果想跳过密码复杂性要求(如果密码太简单报错可以用这个)
# user.password = '您的新密码'
# user.password_confirmation = '您的新密码'
# user.password_automatically_set = false # 这行很重要

# 保存更改
user.save!

# 退出控制台
exit

3、gitlab数据库定时备份

#进入容器
docker exec -it gitlab17.11.1 /bin/bash

cd ~

vi gitlab_back.sh

在文件中添加以下内容
#!/bin/bash
rm /var/opt/gitlab/backups/*
gitlab-rake gitlab:backup:create

#修改文件权限
chmod 777 gitlab_back.sh

#安装cron
apt update
apt install -y cron

crontab -e
#添加以下内容
59 23 * * * /root/gitlab_back.sh  #每天 23:59点执行备份任务

#启动 cron
/etc/init.d/cron start
#查看cron状态
/etc/init.d/cron status

4、gitlab数据备份与恢复

4.1、备份

#进入容器
docker exec -it gitlab17.11.1 /bin/bash

#执行备份命令,默认将备份文件保存至/var/opt/gitlab/backups/
gitlab-rake gitlab:backup:create

#备份时提示gitlab.rb 和 gitlab-secrets.json 文件包含敏感数据,且这些文件未包含在当前的备份中。手动对它们进行备份。
# 1、exit退出容器,将备份文件拉取到宿主机:
exit
sudo mkdir backups
sudo docker cp gitlab:/var/opt/gitlab/backups/1671245938_2022_12_17_14.6.1_gitlab_backup.tar  ~/backups/

# 2、将json和rb文件也复制到备份目录下:
sudo docker cp gitlab:/etc/gitlab/gitlab-secrets.json ~/backups/
sudo docker cp gitlab:/etc/gitlab/gitlab.rb ~/backups/

4.2、恢复

#进入容器停止 GitLab 相关服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl stop puma

# 启动新容器,拷贝文件(注意文件权限)
sudo docker cp ~/backups/1671245938_2022_12_17_14.6.1_gitlab_backup.tar  gitlab:/var/opt/gitlab/backups/
sudo docker cp ~/backups/gitlab-secrets.json   gitlab:/etc/gitlab/
sudo docker cp ~backups/gitlab.rb   gitlab:/etc/gitlab/

#进入容器,进入备份目录
sudo docker exec -it gitlab /bin/bash
cd /var/opt/gitlab/backups
#修改文件权限
chmod 777 文件名
#执行如下命令,在恢复过程中,GitLab 会提示你确认一些操作,按照提示输入 yes 继续即可。
gitlab-rake gitlab:backup:restore BACKUP=1671245938_2022_12_17_14.6.1

#重新加载配置
gitlab-ctl reconfigure 
# 重启
gitlab-ctl restart 

5、gitlab升级

#按照上面的备份步骤对当前版本的数据进行备份

#确保当前通用配置无阻碍升级问题
gitlab-rake gitlab:check

#停止当前的版本
docker stop 当前运行的镜像

gitlab升级不能直接升级到最新版,需根据官方提供的升级路径进行逐步升级,地址:
https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/?current=14.2.3&distro=centos&edition=ce
注意升级后,需等待数据迁移完毕,才可继续升级
gitlab登录超级管理员账号,在管理区域-监控-后台迁移 可查看后台迁移进程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#后台迁移

检查待处理的非批处理后台迁移:
gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining'
gitlab-rails runner -e production 'puts Gitlab::Database::BackgroundMigration::BatchedMigration.queued.count'


检查失败的后台迁移
对于 14.10 及更高版本的 GitLab:
gitlab-rails runner -e production 'puts Gitlab::Database::BackgroundMigration::BatchedMigration.with_status(:failed).count'
对于 14.0-14.9 版本
gitlab-rails runner -e production 'puts Gitlab::Database::BackgroundMigration::BatchedMigration.failed.count'
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐