• gitlab docker部署,备份,恢复。附踩坑记录


    本次安装在CentOS7下进行

    1、安装yum

    检查是否已经安装yum

    yum --version
    
    • 1

    如果未安装

    sudo yum install -y yum-utils
    
    • 1

    添加镜像源:

    • 国外镜像源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    • 阿里镜像源:yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/decker-ce.repo

    2、安装docker

    • 安装最新版本(默认):yum install docker-ce
    • 安装指定版本:yum install docker-ce-20.10.9-3.el7

    配置开机启动:

    • 启动docker:systemctl start docker
    • 配置开机启动:systemctl enable docker
    • 查看docker版本:docker version

    3、docker部署gitlab

    拉取最新gitlab镜像

    方式一:直接使用最新版本镜像

    • docker pull gitlab/gitlab-ce:latest

    方式二:使用指定版本镜像,这里使用了13.10.0版本 (教程使用的此方式)

    • docker pull gitlab/gitlab-ce:13.10.0-ce.0

    创建映射文件目录

    # 映射配置文件夹
    mkdir -p /home/gitlab/conf
    # 映射日志文件夹
    mkdir -p /home/gitlab/logs
    # 映射数据文件夹
    mkdir -p /home/gitlab/data
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行docker容器

    最好不要使用80端口,使用了也没问题后面会教你更改

     后面会改成 --publish 50055:50055  \
    
    • 1
    # 主机名、端口映射、目录映射、gitlab版本 需自行修改
    sudo docker run --detach \
      --hostname ip地址 \
      --publish 50055:80  \
      --name gitlab \
      --restart always \
      --volume /data/gitlab/conf:/etc/gitlab \
      --volume /data/gitlab/logs:/var/log/gitlab \
      --volume /data/gitlab/data:/var/opt/gitlab \
      --shm-size 256m \
      --privileged=true gitlab/gitlab-ce:13.10.0-ce.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    一劳永逸版
    sudo docker run --detach \
      --hostname ip地址 \
      --publish 50055:50055  \
      --name gitlab \
      --restart always \
      --volume /data/gitlab/conf:/etc/gitlab \
      --volume /data/gitlab/logs:/var/log/gitlab \
      --volume /data/gitlab/data:/var/opt/gitlab \
      --shm-size 256m \
      --privileged=true gitlab/gitlab-ce:13.10.0-ce.0
    
    修改gitlab服务端口号:vim /etc/gitlab/gitlab.rb
    
    	external_url 'http://ip:50055'
    
    	使用命令进行更新配置:gitlab-ctl reconfigure
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    查看防火墙

    查看开放的端口号
    firewall-cmd --list-all
    
    开放指定端口
    sudo firewall-cmd --add-port=50055/tcp --permanent
    
    重启防火墙(设置完一定要重启防火墙):
    firewall-cmd --reload
    
    现在外部就可以访问这些端口了
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4、备份

    注意这里gitlab的版本,后面恢复是要保证版本一致的

    # 查看容器id
    docker ps
    
    # 进入容器 示例:docker exec -it -i 4c97d29eee9b /bin/bash
    docker exec -it -i <这里是容器id> /bin/bash
    
    # 执行备份命令
    gitlab-rake gitlab:backup:create
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    备份文件可在 /data/gitlab/data/backups找到

    5、恢复

    要注意恢复版本要和备份版本保持一致

    # 把第一台服务器备份的 xxx_gitlab_backup.tar 文件拷贝到新gitlab的/data/gitlab/data/backups目录中
    
    # 进入容器 示例:docker exec -it -i 4c97d29eee9b /bin/bash
    docker ps
    docker exec -it -i <这里是容器id> /bin/bash
    # 修改权限
    chmod 777 /var/opt/gitlab/backups/1682571554_2023_04_27_13.5.4_gitlab_backup.tar
    chown -R git:git /var/opt/gitlab/backups/1682571554_2023_04_27_13.5.4_gitlab_backup.tar
    
    # 恢复备份文件前,先停止容器内相关数据连接服务
    gitlab-ctl stop puma
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq
    
    # 最好修改下数据权限,不然恢复容易报错
    # 修改postgresql配置
    vi /var/opt/gitlab/postgresql/data/postgresql.conf
    # 如下修改:
    listen_addresses = '*'
    
    # 修改pg_hba配置
    vi /var/opt/gitlab/postgresql/data/pg_hba.conf
    # 最后添加:
    local   all         all                               trust
    host    all         all                               127.0.0.1/32 trust
    
    # 重启gitlab服务
    gitlab-ctl restart
    
    # 修改gitlab账号为超级用户
    su - gitlab-psql
    /opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
    ALTER USER gitlab WITH SUPERUSER;
    \q
    exit
    
    # 恢复备份文件前,先停止容器内相关数据连接服务
    gitlab-ctl stop puma
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq
    
    # 恢复备份, 后面的数字是 1682571554_2023_04_27_13.5.4_gitlab_backup.tar文件的前面一部分
    gitlab-rake gitlab:backup:restore BACKUP=1682571554_2023_04_27_13.5.4
    
    # 重启服务
    gitlab-ctl restart
    
    # 拷贝配置文件
    cp gitlab-secrets.json /data/gitlab/conf/
    cp gitlab.rb /data/gitlab/conf/
    
    # 重启服务
    gitlab-ctl restart
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    修改服务端口号

    由于使用的80端口映射,导致gitlab克隆没有端口号,拉不了代码。

    解决方法

    1、修改服务的端口号
    修改gitlab服务端口号:vim /etc/gitlab/gitlab.rb

    external_url 'http://ip:50055'
    
    使用命令进行更新配置:gitlab-ctl reconfigure
    
    • 1
    • 2
    • 3

    2、进入gitlab容器
    修改配置文件gitlab.yml,修改host 与上面.rb文件修改的一致

    cd /opt/gitlab/embedded/service/gitlab-rails/config
    
    • 1

    在这里插入图片描述
    重启服务

    gitlab-ctl restart
    
    • 1

    3、修改docker容器映射端口,也就是上面docker run 使用的80端口

    在这里插入图片描述
    修改 hostconfig.json 文件,找到如下配置,可以添加想要开放的端口

    "PortBindings":{
        "80/tcp":[
            {
                "HostIp":"",
                "HostPort":"80"
            }
        ],
        "8088/tcp":[
            {
                "HostIp":"",
                "HostPort":"8088"
            }
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    修改 config.v2.json 文件,找到如下配置,可以添加想要开放的端口

    "ExposedPorts":{
                "80/tcp":{
     
                },
                "8088/tcp":{
     
                }
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注:并不需要修改Ports,只有在你没有stop容器时,Ports才会有值,如果关闭了容器,就是null。当然如果你修改了也无所谓,因为重启容器后,就会被刷新。

    重启docker和容器即可
    重启docker命令如下:

    systemctl start docker
    
    • 1
  • 相关阅读:
    数据分析 | Pandas 200道练习题,每日10道题,学完必成大神(5)
    计算机组成原理-总线详细讲解(持续更新中)
    C#二维码的生成及标签的制作(完整版)
    微信公众号授权登录后报redirect_uri参数错误的问题
    看门狗实验
    Webpack和Vite
    字符串排序程序
    【ML04】Multiple Variable Linear Regression
    C语言辅助学习系统(asp.net开发)
    网络安全(黑客)—2024自学手册
  • 原文地址:https://blog.csdn.net/tian__c/article/details/133743394