• Arm 架构 Ubuntu 使用 Docker 安装 Gitlab 并使用


    官方 gitlab 文档
    我的系统是 arm 架构的 ubuntu
    官网没有提供 arm 架构的 docker 的 gitlab 的安装方式,直接安装的也是后来加的,文档也是随笔带过,,,我用到了,记录一下

    默认已经安装了 docker
    在 docker hub 里有人编译了 arm 架构的 gitlab 的 docker 镜像,并且有很多人在使用,最近也在更新,就是这个yrzr/gitlab-ce-arm64v8

    如果不是 arm 架构的话可以直接参考上面的官方文档,安装使用官方的方法,后面配置和备份基本一致

    安装

    拉取镜像并启动容器

    docker run \
      --detach \
      --restart always \
      --name gitlab-ce \
      --privileged \
      --memory 4096M \
      --publish 22:22 \
      --publish 80:80 \
      --publish 443:443 \
      --hostname gitlab.example.com \
      --env GITLAB_OMNIBUS_CONFIG=" \
        nginx['redirect_http_to_https'] = true; "\
      --volume /srv/gitlab-ce/conf:/etc/gitlab:z \
      --volume /srv/gitlab-ce/logs:/var/log/gitlab:z \
      --volume /srv/gitlab-ce/data:/var/opt/gitlab:z \
      yrzr/gitlab-ce-arm64v8:latest
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    有可能分行的话不好改,下面直接弄成一行了,方便修改

    docker run --detach --restart always --name gitlab-ce --privileged --memory 4096M --publish 22:22 --publish 80:80 --publish 443:443 --hostname gitlab.example.com --env GITLAB_OMNIBUS_CONFIG="nginx['redirect_http_to_https'] = true; " --volume /srv/gitlab-ce/conf:/etc/gitlab:z --volume /srv/gitlab-ce/logs:/var/log/gitlab:z --volume /srv/gitlab-ce/data:/var/opt/gitlab:z yrzr/gitlab-ce-arm64v8:latest
    
    • 1

    上面命令根据自己需求更改,比如 22、80、443 端口映射,还有访问域名和下面的配置文件日志文件映射位置

    我这里解析一下域名,解析为 gitlab.siyongwei.com,如果服务器上什么都没有专门安装 gitlab,倒是可以直接安装,我这里因为在服务器上已经安装了宝塔面板,又放了挺多网站,所以 80 端口、443 端口和 22 端口都已经被占用,如果说直接把 80 端口映射成其他端口,在访问域名的时候后面还需要加上端口,不美观也不方便,所以还想着安装之后直接使用域名就可以直接访问,因此我这里仅映射 80 端口,然后通过反向代理使域名可以直接访问

    docker run \
      --detach \
      --restart always \
      --name gitlab-ce \
      --privileged \
      --memory 4096M \
      --publish 8089:80 \
      --hostname gitlab.siyongwei.com \
      --env GITLAB_OMNIBUS_CONFIG=" \
        nginx['redirect_http_to_https'] = true; "\
      --volume /srv/gitlab-ce/conf:/etc/gitlab:z \
      --volume /srv/gitlab-ce/logs:/var/log/gitlab:z \
      --volume /srv/gitlab-ce/data:/var/opt/gitlab:z \
      yrzr/gitlab-ce-arm64v8:latest
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    这下面是我改过的,方便我自己复制用的。。。

    docker run --detach --restart always --name gitlab-ce --privileged --memory 4096M --publish 8089:80 --hostname gitlab.siyongwei.com --env GITLAB_OMNIBUS_CONFIG="nginx['redirect_http_to_https'] = true; " --volume /srv/gitlab-ce/conf:/etc/gitlab:z --volume /srv/gitlab-ce/logs:/var/log/gitlab:z --volume /srv/gitlab-ce/data:/var/opt/gitlab:z yrzr/gitlab-ce-arm64v8:latest
    
    • 1

    在这里插入图片描述

    可以看到已经启动了

    在这里插入图片描述

    然后添加一个站点,配置反向代理,我这里直接使用的宝塔面板可视化配置,不使用宝塔面板的话可以直接更改 nginx 的配置文件配置反向代理

    在这里插入图片描述

    我这里顺便加了 ssl 证书,证书也很方便,我这里使用的之前 acme.sh 申请的自动续期的通配符证书,可以看[post cid=“178” cover=“” size=“small”/]
    然后就直接可以访问到了,如果打开网站是 502 不用怕,因为这个初始化启动需要挺长时间,等几分钟就可以了

    在这里插入图片描述

    登录

    这里用户名时 root,密码可以输入下面命令查看,这条命令在官网也是有的

    sudo docker exec -it gitlab-ce grep 'Password:' /etc/gitlab/initial_root_password
    
    • 1

    在这里插入图片描述

    密码文件将在 24 小时后的第一次重新配置运行中自动删除
    在这里插入图片描述

    至此,登陆成功

    修改语言,默认安装完成是英文,可以修改成中文或其他语言,右上角头像—Edit profile—Preferences—Localization—Language—Save changes,即可,修改完成后要刷新一下

    其他资料就不说了

    配置邮件传输

    修改 gitlab.rb 配置文件,按上面映射,文件位置在/srv/gitlab-ce/conf/gitlab.rb

    vim /srv/gitlab-ce/conf/gitlab.rb
    
    • 1

    正常模式下键入/smtp搜索配置邮件位置
    在这里插入图片描述

    配置可参考官方配置文档 邮件传输协议

    我这里用 QQ 的 smtp 服务,下面是配置示例,要把下面的gitlab_email_from注释也取消

    在这里插入图片描述

    配置依次是是否开启邮件服务邮件服务地址端口发送名(填写邮件地址)邮件授权码(获取方法网上很好找,随便都能搜到,这里不多赘述)邮件发送域名,后面不懂,最后一个是发送者(填写邮件地址)

    配置完成后保存
    使用下面命令进入 gitlab-ce 的 docker 容器

    docker exec -it gitlab-ce /bin/bash
    
    • 1

    使用下面命令重新加载 gitlab 的配置文件

    gitlab-ctl reconfigure
    
    • 1

    测试邮件传输是否可用

    GitLab 给提供了测试邮件是否可用的方法,使用 Rails 控制台验证 GitLab 是否可以正确发送电子邮件

    执行下面命令进入控制台

    gitlab-rails console
    
    • 1

    然后在控制台提示符下输入以下命令,使 GitLab 发送测试电子邮件

    Notify.test_email('收件邮箱','Message Subject','Message Body').deliver_now
    
    • 1

    在这里插入图片描述

    可以看到邮件发送成功

    然后就可以修改用户的电子邮件了,因为电子邮件需要做验证

    在这里插入图片描述

    验证后在用户资料修改一下添加的邮箱,就可以把默认的admin@example.com删掉了,因为默认的是示例,不可以正常使用

    在这里插入图片描述

    备份与还原

    参考官网备份还原

    备份

    这里我添加了一个测试用的存储库

    在这里插入图片描述

    备份命令

    docker exec -t <容器名> gitlab-backup create
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    备份完成有句提示,说 gitlab.rb 和 gitlab-secrets.json 要手动备份,按上面文件映射,这两个文件就在/srv/gitlab-ce/conf/文件夹内

    还有其他增量备份、特定存储库备份等乱七八糟的类别的备份方式,具体可以看上面官方文档

    还原

    这里我存了一下刚才备份的两个文件和执行备份命令生成的压缩包
    在这里插入图片描述

    然后我把容器、镜像、还有前面的映射出来的 srv 下的 gitlab-ce 目录都删掉,重新拉取一下镜像,启动容器,登录一下可以看到都变成初始状态了
    在这里插入图片描述

    停止连接数据库的进程命令

    docker exec -it <容器名> gitlab-ctl stop puma
    docker exec -it <容器名> gitlab-ctl stop sidekiq
    
    • 1
    • 2

    停止后检查一下状态

    docker exec -it <容器名> gitlab-ctl status
    
    • 1

    在这里插入图片描述

    恢复备份命令

    docker exec -it <容器名> gitlab-backup restore BACKUP=<备份文件的时间戳(也就是备份文件文件名去掉_gitlab_backup.tar)>
    
    • 1

    在这里插入图片描述

    然后让输入两次 yes 进行确认,恢复后会提示 gitlab.rb 和 gitlab-secrets.json 需要手动恢复

    在这里插入图片描述

    然后把这两个文件移动到/srv/gitlab-ce/conf/文件夹内,覆盖掉原来的文件

    在这里插入图片描述

    然后重启一下容器

    docker restart <容器名>
    
    • 1

    在这里插入图片描述

    检查 gitlab

    docker exec -it <容器名> gitlab-rake gitlab:check SANITIZE=true
    
    • 1

    在这里插入图片描述

    查看 gitlab,可以看到存储库和用户资料都已经恢复了

    在这里插入图片描述

    在这里插入图片描述

    自动化备份

    使用 corn 自动化备份可以参考官方文档配置 cron 以进行每日备份

    我这里因为之前有用到宝塔面板计划任务备份网站和数据库,所以直接使用宝塔面板的计划任务实施自动化备份

    首先每天 0 点 05 执行备份 gitlab 命令

    在这里插入图片描述

    然后可以添加下面的 shell 脚本把配置文件和备份的 tar 压缩文件复制/移动到 gitlab 网站文件夹内,然后就方便备份到外部网盘中了

    dir1="/www/wwwroot/gitlab/backup-conf/"$(date "+%Y_%m_%d")
    if [ ! -d "$dir1" ];then
    mkdir $dir1
    echo "${dar1}创建文件夹成功"
    cp /srv/gitlab-ce/conf/gitlab-secrets.json $dir1
    echo "已备份gitlab-secrets.json"
    cp /srv/gitlab-ce/conf/gitlab.rb $dir1
    echo "已备份gitlab.rb"
    rm -rf $(find /www/wwwroot/gitlab/backup-conf/* -mtime +1);
    echo "已删除2天前的文件夹"
    else
    echo "今日已备份conf配置文件"
    fi
    
    dir2="/www/wwwroot/gitlab/backup-tar/"$(date "+%Y_%m_%d")
    if [ ! -d "$dir2" ];then
    mkdir $dir2
    echo "${dar2}创建文件夹成功"
    mv /srv/gitlab-ce/data/backups/*$(date "+%Y_%m_%d")* $dir2
    echo "已备份tar压缩文件"
    rm -rf $(find /www/wwwroot/gitlab/backup-tar/* -mtime +1);
    echo "已删除2天前的文件夹"
    else
    echo "今日已备份tar压缩文件"
    fi
    
    • 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

    执行脚本的前提要先手动创建/www/wwwroot/gitlab/backup-conf//www/wwwroot/gitlab/backup-tar/文件夹

    这个脚本是在 gitlab 网站文件夹的backup-conf文件夹和backup-tar文件夹内创建年_月_日格式的文件夹,创建完成后将/srv/gitlab-ce/conf/gitlab-secrets.json/srv/gitlab-ce/conf/gitlab.rb配置文件复制到backup-conf里的年_月_日文件夹内,将 docker 命令备份的 tar 压缩文件移动到backup-tar里的年_月_日文件夹内

    至此,完成整体的备份
    再加上宝塔面板自带的备份网站计划任务就可以备份到其他网盘中了
    在这里插入图片描述

    ❀❀❀❀❀❀ 完结散花 ❀❀❀❀❀❀

    Written ❤️ sywdebug.
  • 相关阅读:
    drone的简单使用
    one-hot和Embedding
    SpringMVC实现增删改查
    【Linux-网络编程】
    Go:基于BDD的测试框架 Ginkgo 简介及实践
    java笔记整理
    Oracle 中的 PL/SQL
    精华回顾:Web3 前沿创新者在 DESTINATION MOON 共话未来
    Unirech腾讯云代充-通过VNC 登录腾讯云国际版Windows云服务器实例教程
    Kubernetes中如何使用 CNI?
  • 原文地址:https://blog.csdn.net/sywdebug/article/details/132761564