使用docker-compose部署gitlab13.11.7并还原以前的备份
1. 安装docker
1.1 更换docker源
我这里采用yum的方式安装,为了安装快速,我更换了阿里云的docker源
[root@localhost data]# mkdir -p ./download/docker
[root@localhost data]# cd download/docker/
[root@localhost docker]# wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost docker]# ls
docker-ce.repo
检查一下下载的源
cat docker-ce.repo
进入存放源的目录/etc/yum.repos.d
将下载的docker源放在此目录下
[root@localhost data]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# cp /data/download/docker/docker-ce.repo ./
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo CentOS-x86_64-kernel.repo
CentOS-Debuginfo.repo CentOS-Sources.repo docker-ce.repo
清理缓存并建立新的缓存
[root@localhost ~]# yum clean expire-cache
[root@localhost ~]# yum makecache
1.2 安装docker
[root@localhost ~]# yum install docker-ce -y
1.3 查看docker版本
出现版本信息表示安装成功。
1.4 更新一下镜像仓库加速地址
[root@localhost ~]# cat>/etc/docker/daemon.json<<E0F
>{
"registry-mirrors":["https://registry.docker-cn.com"]
>}
> EOF
1.5 重启docker服务查看进程
[root@localhost ~]# systemctl start docker
[root@localhost ~]# ps -ef | grep docker
1.6 测试一下新的仓库源
以nginx 为例,如果不能成功拉去,可以再换其他的加速源。
[root@localhost ~]# docker pull nginx
2. 安装docker-compose
2.1 下载Docker-Compose
进入/usr/local/bin目录
[root@localhost ~]# cd /usr/local/bin
[root@localhost bin]# curl -L https://github.com/docker/compose/releases/download/2.26.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2.2 添加执行权限
chmod +x /usr/local/bin/docker-compose
2.3 查看是否安装成功
docker-compose -version
3. 使用docker-compose部署gitlab
3.1 在根目录下使用mkdir gitlab 命令创建giltlab目录
mkdir gitlab
3.2 使用cd gitlab进入目录
cd gitlab
3.3 创建docker-compose.yml文件
在当前目录内创建docker-compose.yml文件
vim docker-compose.yml
文件内容如下:
version: '3.6'
services:
gitlab: #定义服务名称
image: 'gitlab/gitlab-ce:13.11.7-ce.0' #定义镜像
container_name: gitlab #定义container名称
restart: always #定义重启策略
privileged: true #以特权模式运行
hostname: 'gitlab'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.88.140:9000' #定义web地址,填写自己服务器地址
gitlab_rails['gitlab_shell_ssh_port'] = 1022 #定义ssh端口,通过ssh拉取仓库代码需要用到
ports:
- '9000:9000' #web端口需要和上面配置的一致
- '8443:443'
- '1022:22'
volumes:
- /gitlab/data/gitlab/config:/etc/gitlab
- /gitlab/data/gitlab/data:/var/opt/gitlab
- /gitlab/data/gitlab/logs:/var/log/gitlab
3.4 创建映射目录
创建好docker-compose.yml文件后,要按照里面volumes:的内容,创建好/gitlab/data/gitlab/config、/gitlab/data/gitlab/data、/gitlab/data/gitlab/logs三个目录。
mkdir -p /gitlab/data/gitlab/config
mkdir -p /gitlab/data/gitlab/data
mkdir -p /gitlab/data/gitlab/logs
3.5 启动gitlab容器
在存放docker-compose.yml文件的目录内启动gitlab容器,命令如下:
root@aqscgitlab:/gitlab# docker-compose up -d
参数 -d 表示在后台启动。
3.6 查看启动后容器状态
root@aqscgitlab:/gitlab# docker-compose ps
3.7 测试登录gitlab系统
在浏览器访问gitlab:http://192.168.88.140:9000/
第一次登录输入的就是新密码,记住自己的密码。
4. 还原备份
4.1 将备份文件,拷贝到容器内还原文件存放目录
docker cp ./1679458200_2023_03_22_13.11.7_gitlab_backup.tar gitlab:/var/opt/gitlab/backups/1679458200_2023_03_22_13.11.7_gitlab_backup.tar
4.2 进入容器查看备份文件
进入容器命令:
docker exec -it gitlab bash
进入备份存放目录
cd /var/opt/gitlab/backups/
ll
4.3 执行还原命令
gitlab-rake gitlab:backup:restore BACKUP=1679458200_2023_03_22_13.11.7
注意:BACKUP=的值是备份文件的名字,不要加上文件的后缀。
4.4 出现报错并解决
报错如下:
解决办法:
修改postgresql配置
1、修改postgresql.conf
vim /var/opt/gitlab/postgresql/data/postgresql.conf
修改此处监听地址,*代表所有。
listen_addresses = '*'
2、修改postgresql.conf
vim /var/opt/gitlab/postgresql/data/pg_hba.conf
最下面新增两行
local all all trust
host all all 127.0.0.1/32 trust
3、重启gitlab服务
gitlab-ctl restart
4、修改gitlab账号为超级用户
su - gitlab-psql
/opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
gitlabhq_production=# ALTER USER gitlab WITH SUPERUSER;
ALTER ROLE
gitlabhq_production=# \q
4.5 重复执行还原命令
恢复数据需要一段时间中间不要中断
4.6 恢复完成,登录gitlab测试
页面已经发生改变