文章目录
- 1.创建存放gitlab数据的目录
- 2.docker启动gitlab容器
- 3.修改gitlab的下载代码的路径地址
- 4.备份
- 5.恢复
官方地址:https://docs.gitlab.com/ee/install/docker.html
1.创建存放gitlab数据的目录
[root@k8s-master ~]# mkdir /home/fands
[root@k8s-master ~]# mkdir /home/fands/data
2.docker启动gitlab容器
如下是docker启动gitlab的命令,可以将其写到sh文件中方便后续重建;
#gitlab-docker-run.sh
GITLAB_HOME=/home/fands/data/gitlab
docker run -itd \
--hostname gitlab.ctnrs.com \
--publish 443:443 \
--publish 88:80 \
--publish 2222:22 \
--name=gitlab \
--restart=always \
-volume $GITLAB_HOME/config:/etc/gitlab \
-volume $GITLAB_HOME/logs:/var/log/gitlab \
-volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ce:13.12.5-ce.0
- GITLAB_HOME:本地存放gitlab数据的目录
- –hostname:设置主机名
- –publish 443:443:将gitlab容器的443端口映射到本地的443端口
- –publish 88:80:同理将容器的80端口映射到本地的88端口
- –publish 2222:22:同理将容器的22端口映射到本地的2222端口(22端口用作于gitlab的ssh git下载代码)
- –name:容器名称
- –restart=always:容器重启策略,always代表总是重启
- -volume $GITLAB_HOME/config:/etc/gitlab:数据持久化,将容器内的gitlab的数据目录/etc/gitlab 持久化到 本地存放gitlab数据的目录里
- -volume $GITLAB_HOME/logs:/var/log/gitlab:数据持久化,将容器内的gitlab的数据目录/var/log/gitlab 持久化到 本地存放gitlab数据的目录里
- -volume $GITLAB_HOME/data:/var/opt/gitlab:数据持久化,将容器内的gitlab的数据目录/var/opt/gitlab 持久化到 本地存放gitlab数据的目录里
然后访问使用宿主机IP和88端口去访问gitlab,我这里是http://10.8.0.7:88/,gitlab启动时间会很长,需要3-5分钟大家耐心等待…
安装完后需要设置gitlab的管理员用户密码
登陆gitlab
3.修改gitlab的下载代码的路径地址
默认为hostname主机名
示例修改为:gitlab.study.com
#修改gitlab主配置文件(目录为持久化到本地的gitlab数据目录)
#/home/fands/data/gitlab/config/gitlab.rb
修改:
external_url 'http://gitlab.study.com'
然后保存重启gitlab容器
[root@bogon ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
069d710325d7 gitlab/gitlab-ce:13.12.5-ce.0 "/assets/wrapper" 49 minutes ago Up 22 minutes (healthy) 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:2222->22/tcp, :::2222->22/tcp, 0.0.0.0:88->80/tcp, :::88->80/tcp gitlab
[root@bogon ~]# docker restart gitlab
再重新看下下载代码的地址
4.备份
docker方式部署的gilab备份及其的简单,直接将容器持久化到本地的gitlab数据目录备份即可,或直接将这个目录拷贝到其他机器上直接docker run启动 都是没有问题的,不会丢失数据!
例如:我这里的数据目录为:/home/fands/data/gitlab
自动备份脚本如下
#bak.sh
#!/bin/bash
set -e
#持久化到本地的gitlab数据目录
GITLAB_DIR=/home/fands/data/
BACKUP_DIR=/root/backup
BACKUP_TIME=`date +%Y_%m_%d`
if [ ! -d "$BACKUP_DIR" ];then
echo "备份目录"$BACKUP_DIR"不存在,请创建"
exit 1
else
echo "开始执行备份"
cd $GITLAB_DIR
tar -zcf $BACKUP_DIR/gitlab_bak_"$BACKUP_TIME".tar.gz gitlab 2>/dev/null
if [ $? == 0 ];then
echo "备份成功"
echo "备份文件为:$BACKUP_DIR/gitlab_bak_"$BACKUP_TIME".tar.gz"
else
echo "备份失败"
exit 1
fi
fi
crontab定时执行
0 3 * * * sh /root/bak.sh 1>>/root/bak_logs/gitlab_bak.log 2>&1
5.恢复
上面实现了每天进行备份gitlab,如若恢复的话,直接解压最近的备份文件,接着覆盖gitlab的持久化目录 然后重启gitlab容器即可;
#解压备份文件
[root@bogon backup]# tar -zxf gitlab_bak_2024_04_18.tar.gz
[root@bogon backup]# ll
总用量 22820
drwxr-xr-x. 5 root root 44 4月 18 14:13 gitlab
-rw-r--r--. 1 root root 23367068 4月 18 16:58 gitlab_bak_2024_04_18.tar.gz
#先将当前使用的数据目录重命名
[root@bogon backup]# mv /home/fands/data/gitlab /home/fands/data/gitlab.bak
#将解压好的备份目录移动到备份目录下
[root@bogon backup]# mv gitlab /home/fands/data/
#重启gitlab容器
[root@bogon backup]# docker ps
[root@bogon backup]# docker restart gitlab