docker环境搭建gitlab服务

本文介绍如何使用Docker部署GitLab服务器,包括获取镜像、配置端口映射、修改配置文件及实现数据备份与迁移的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 搭建

  • 获取 docker 镜像

    docker pull gitlab/gitlab-ce:latest
    
  • 宿主机上准备 3 个目录,和 docker 容器共享,用于存放 gitlab 的数据

    mkdir /home/tanrui/gitlab-server/config
    mkdir /home/tanrui/gitlab-server/logs
    mkdir /home/tanrui/gitlab-server/data
    
  • 创建容器:

    docker run \
     -itd  \
     -p 9980:80 \
     -p 9922:22 \
     -v /home/tanrui/gitlab-server/config:/etc/gitlab \
     -v /home/tanrui/gitlab-server/logs:/var/log/gitlab \
     -v /home/tanrui/gitlab-server/data:/var/opt/gitlab \
     --restart always \
     --privileged=true \
     --name gitlab3 \
     gitlab/gitlab-ce:latest
     
     # -p 9980:80               宿主机的 9980 端口映射到 docker 的 80 端口
     # -v /home/tanrui/gitlab-server/config:/etc/gitlab
     #     宿主机的 /home/tanrui/gitlab-server/config    目录映射到 docker 的 /etc/gitlab
     # --restart always         容器自启动
     # --privileged=true        让容器获取宿主机root权限
     # --name gitlab            设置容器名称为gitlab
     # gitlab/gitlab-ce:latest  镜像的名称,这里也可以写镜像ID
    
  • 进入容器:

    docker exec -it gitlab /bin/bash
    

    修改 gitlab 配置文件 /etc/gitlab/gitlab.rb

    external_url 'http://192.168.3.4'  # 宿主机的 ip,默认 80 端口
    
    ## ssh 默认22端口,可以用后文方法更改,主要是解决克隆工程
    #gitlab_rails['gitlab_ssh_host'] = '192.168.3.4'
    #gitlab_rails['gitlab_shell_ssh_port'] = 9922 
    

    执行:

    gitlab-ctl reconfigure
    

    网页上即可访问:http://192.168.3.4:9980

  • 修改 root 密码:

    # 进入容器内部
    docker exec -it gitlab /bin/bash
     
    # 进入控制台
    gitlab-rails console -e production
     
    # 查询id为1的用户,id为1的用户是超级管理员
    u = User.where(id:1).first
    # 修改密码为tr123456
    u.password='tr123456'
    # 保存
    u.save!   # !!!这里有感叹号
    # 退出
    exit
    
  • 在页面中,克隆工程有 SSH 和 HTTP,克隆失败主要时端口映射的问题:例如 SSH,显示的 clone 地址是:git@192.168.3.4:root/first.git,默认是访问 22 端口,由于创建 docker 容器的时候指定了端口映射:主机 9922 >>> docker 22,所以要更改访问的端口:ssh://git@192.168.3.4:9922/root/first.git。HTTP 的 clone 一样会有问题。解决这个问题可以修改文件:/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

    gitlab:
        ## Web server settings (note: host is the FQDN, do not include http://)
        host: 192.168.3.4
        port: 9980        # http 的端口(和 docker 映射一致)
        https: false
        # ....
    	ssh_port: 9922    # ssh 的端口(和 docker 映射一致)
    

    修改后重启 gitlab-ctl restart,然后在页面上就可看见 clone 地址的变化。
    注意:不要 gitlab-ctl reconfigure !因为重新配置之后上面修改的会被冲掉!

备份

  • 备份这两个配置文件:
    /etc/gitlab/gitlab.rb
    /etc/gitlab/gitlab-secrets.json
    
  • gitlab停止数据服务:
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq
    
  • 执行备份命令:
    gitlab-backup create
    
    会在目录 /var/opt/gitlab/backups/ 生成 1660464164_2022_08_14_14.6.1_gitlab_backup.tar 类似文件。

迁移

  • 复制 1660464164_2022_08_14_14.6.1_gitlab_backup.tar 到新的 gitlab 上:
    cp 1660464164_2022_08_14_14.6.1_gitlab_backup.tar /var/opt/gitlab/backups/
    
  • 恢复:
    gitlab-backup restore BACKUP=1660464164_2022_08_14_14.6.1
    
  • 复制配置文件到对应位置:
    cp gitlab.rb  /etc/gitlab/
    cp gitlab-secrets.json  /etc/gitlab/
    
  • 重新加载配置:
    gitlab-ctl reconfigure
    
  • 恢复数据服务
    gitlab-ctl start unicorn
    gitlab-ctl start sidekiq
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值