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

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

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

上面命令根据自己需求更改,比如 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

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

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

在这里插入图片描述

可以看到已经启动了

在这里插入图片描述

然后添加一个站点,配置反向代理,我这里直接使用的宝塔面板可视化配置,不使用宝塔面板的话可以直接更改 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

在这里插入图片描述

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

至此,登陆成功

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

其他资料就不说了

配置邮件传输

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

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

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

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

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

在这里插入图片描述

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

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

docker exec -it gitlab-ce /bin/bash

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

gitlab-ctl reconfigure

测试邮件传输是否可用

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

执行下面命令进入控制台

gitlab-rails console

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

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

在这里插入图片描述

可以看到邮件发送成功

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

在这里插入图片描述

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

在这里插入图片描述

备份与还原

参考官网备份还原

备份

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

在这里插入图片描述

备份命令

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

在这里插入图片描述

在这里插入图片描述

备份完成有句提示,说 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

停止后检查一下状态

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

在这里插入图片描述

恢复备份命令

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

然后重启一下容器

docker restart <容器名>

在这里插入图片描述

检查 gitlab

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

在这里插入图片描述

查看 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配置文件"
fidir2="/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

执行脚本的前提要先手动创建/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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/125792.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫逆向实战(31)-某花顺行情中心(cookie、补环境)

一、数据接口分析 主页地址&#xff1a;某花顺 1、抓包 通过抓包可以发现数据接口是/page/2/ajax/1/ 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 通过查看“标头”可以发现有一个Hexin-V加密参数&#xff0c;但是这个参数的值与c…

初学Python记

Python这个编程语言的大名当然听说过了呀&#xff0c;这几年特别火&#xff0c;火的一塌涂地。大家可以回忆一下&#xff1a;朋友圈推荐的广告里经常可以看见python的网课广告。 本学期&#xff0c;学校开设了python课程&#xff0c;这几天学习了一下入了一下门&#xff0c;感…

SpringMVC笔记

文章目录 一、SpringMVC简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点 二、HelloWorld1、开发环境2、创建maven工程a>添加web模块b>打包方式&#xff1a;warc>引入依赖 3、配置web.xmla>默认配置方式b>扩展配置方式 4、创建请求控制器5、创建springMVC…

selenium的Chrome116版驱动下载

这里写自定义目录标题 下载地址https://googlechromelabs.github.io/chrome-for-testing/#stable 选择chromedriver 对应的平台和版本 国内下载地址 https://download.csdn.net/download/dongtest/88314387

探索Apache Hive:融合专业性、趣味性和吸引力的数据库操作奇幻之旅

文章目录 版权声明一 数据库操作二 Hive数据表操作2.1 表操作语法和数据类型2.2 Hive表分类2.3 内部表Vs外部表2.4 内部表操作2.4.1 创建内部表2.4.2 其他创建内部表的形式2.4.3 数据分隔符2.4.4 自定义分隔符2.4.5 删除内部表 2.5 外部表操作2.5.1 创建外部表2.5.2 操作演示2.…

MNIST手写数字辨识-cnn网路 (机器学习中的hello world,加油)

用PyTorch实现MNIST手写数字识别(非常详细) - 知乎 (zhihu.com) 参考来源&#xff08;这篇文章非常适合入门来看&#xff0c;每个细节都讲解得很到位&#xff09; 一、模块函数用法-查漏补缺&#xff1a; 1.关于torch.nn.functional.max_pool2d()的用法&#xff1a; 上述示例…

工作和生活中,如何用项目管理思维解决复杂的事情?

在工作和生活中&#xff0c;许多事情都可以采用项目思维方式来解决。当我们逐渐将工作和生活中的各种事务以项目的方式来处理和推进时&#xff0c;我们可能并没有意识到&#xff0c;实际上我们正在运用项目管理思维。 项目管理思维能帮助我们在面对繁杂事务时&#xff0c;理清…

OpenCV 06(图像的基本变换)

一、图像的基本变换 1.1 图像的放大与缩小 - resize(src, dsize, dst, fx, fy, interpolation) - src: 要缩放的图片 - dsize: 缩放之后的图片大小, 元组和列表表示均可. - dst: 可选参数, 缩放之后的输出图片 - fx, fy: x轴和y轴的缩放比, 即宽度和高度的缩放比. - …

flask bootstrap页面json格式化

html <!DOCTYPE html> <html lang"en"> <head><!-- 新 Bootstrap5 核心 CSS 文件 --> <link rel"stylesheet" href"static/bootstrap-5.0.0-beta1-dist/css/bootstrap.min.css"><!-- 最新的 Bootstrap5 核心 …

【设计模式】组合模式实现部门树实践

1.前言 几乎在每一个系统的开发过程中&#xff0c;都会遇到一些树状结构的开发需求&#xff0c;例如&#xff1a;组织机构树&#xff0c;部门树&#xff0c;菜单树等。只要是需要开发这种树状结构的需求&#xff0c;我们都可以使用组合模式来完成。 本篇将结合组合模式与Mysq…

PaddleOCR学习笔记2-初步识别服务

今天初步实现了网页&#xff0c;上传图片&#xff0c;识别显示结果到页面的服务。后续再完善。 采用flask paddleocr bootstrap快速搭建OCR识别服务。 代码结构如下&#xff1a; 模板页面代码文件如下&#xff1a; upload.html : <!DOCTYPE html> <html> <…

合宙Air724UG LuatOS-Air LVGL API控件-窗口 (Window)

窗口 (Window) 分 享导出pdf 示例代码 win lvgl.win_create(lvgl.scr_act(), nil) lvgl.win_set_title(win, "Window title") -- close_btn lvgl.win_add_btn_right(win, "\xef\x80\x8d") -- --lvgl.obj_set_event_cb(cl…

【运维 Pro】时序场景实践与原理 - 1. 分布与分区

【运维 Pro】: 是由 YMatrix 售前和售后团队负责的栏目。除了介绍日常的数据库运维和使用知识&#xff0c;我们更希望能够通过介绍这些知识背后的原理&#xff0c;让大家和我们一起感知数据库的美妙。 摘要 有别于其它场景&#xff0c;时序场景中的数据、查询都有着更为明显的…

echarts饼图点击区块事件

效果图&#xff1a; 代码&#xff1a; let option {color: pieColors,series: [{name: Access From,type: pie,radius: [36%, 56%],avoidLabelOverlap: false,label: {formatter: params > {// console.log(params)return {color${params.dataIndex}|${params.name}(${par…

EXCEL 中find,if and,if or

接上一篇sql中find函数的作用&#xff0c;由于工作需求是用帆软做报表&#xff0c;他的一些代码不仅有js&#xff0c;sql中的还有一些excel的相关知识&#xff0c;故作整理。 FIND() excel中的find原理和sql中相似&#xff0c;具体可查看 SQL函数 $FIND_Yangshiwei....的博客…

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书对外经济贸易大学图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书对外经济贸易大学图书馆

Splunk Enterprise for Mac:卓越的数据分析与管理工具

在当今的数字化时代&#xff0c;数据已经成为企业成功的核心驱动力。然而&#xff0c;如何有效地管理和分析这些数据&#xff0c;却常常让企业感到困惑。Splunk Enterprise for Mac 是一款领先的数据分析和管理工具&#xff0c;可以帮助你解决这一难题。 Splunk Enterprise fo…

火山引擎边缘云助力智能科技赋予生活更多新意

当下&#xff0c;先进的科学技术使得我们的日常生活变得快捷、舒适。大到上百层智能大厦、高端公共场所、社会智能基础设施&#xff0c;小到智能家居监控、指纹密码锁等&#xff0c;在这个充满想象力的时代&#xff0c;科技以更加智能化的方式改变和守护我们的生活。 引入智能…

[小尾巴 UI 组件库] 全屏响应式轮播背景图(基于 Vue 3 与 Element Plus)

文章归档于&#xff1a;https://www.yuque.com/u27599042/row3c6 组件库地址 npm&#xff1a;https://www.npmjs.com/package/xwb-ui?activeTabreadme小尾巴 UI 组件库源码 gitee&#xff1a;https://gitee.com/tongchaowei/xwb-ui小尾巴 UI 组件库测试代码 gitee&#xff1a…

【已更新代码图表】2023数学建模国赛E题python代码--黄河水沙监测数据分析

E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响&#xff0c;以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾 等方面都具有重要的理论指导意义。 附件 1 给出了位于小浪底水…