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

news2025/2/26 19:48:15

官方 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配置文件"
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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STM32】常用存储器

常用存储器 RAM 存储器 RAM 是“Random Access Memory”的缩写&#xff0c;被译为随机存储器。所谓“随机存取”&#xff0c;指的是当存储器中的消息被读取或写入时&#xff0c;所需要的时间与这段信息所在的位置无关。而RAM可随读取其内部任意地址的数据&#xff0c;时间都是…

Android 12.0 禁用系统app首次启动动画SplashScreen功能分析

1.前言 在12.0的系统开发中,由于系统增加了新特性,在app首次启动的时候,添加了启动引导动画SplashScreen功能,所以会默认显示 app图标作为一张动画来过度,解决首次启动卡顿问题,接下来分析下看是怎么样添加的,然后禁用就可以了 如图: 2.禁用系统app首次启动动画SplashSc…

关于mybatisplus报错:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplat的问题

可能是mybatisplus版本不兼容的问题&#xff0c;我之前用的3.4.0&#xff0c;springboot版本是3.1.3&#xff0c;maven版本是3.8.8&#xff0c;运行的时候报了这个错。现在修改了mybatisplus的版本&#xff0c;如下图&#xff1a; 这样就不报错了。 大家可以在这里找合适的my…

DGA行为转变引发了对网络安全的担忧

Akamai的研究人员发现&#xff0c;在域名系统(DNS)流量数据中&#xff0c;动态种子域生成算法(DGA)家族的行为发生了令人担忧的变化。这一发现揭示了恶意行为者如何调整他们的策略来延长他们的指挥与控制(C2)通信通道的寿命&#xff0c;以保护他们的僵尸网络。 从技术角度来看…

Excel文件生成与下载(SpringBoot项目)(easypoi)

说明 通过接口&#xff0c;导出表格。 使用SpringBoot框架和easypoi表格解析框架&#xff0c;生成Excel表格&#xff0c;并通过接口下载。 表格示例 依赖 版本 <easypoi.version>4.4.0</easypoi.version>依赖 <!-- easypoi --> <dependency><…

Matlab图像处理之Lee滤波器

目录 一、前言:二、LEE滤波器2.1 LEE滤波器原理2.2 LEE滤波器实现步骤三、MATLAB代码示例一、前言: LEE滤波器是一种常用于合成孔径雷达(SAR)图像去噪的滤波器。它能增强图像的局部对比度。今天我们将通过MATLAB来实现这种滤波器。 二、LEE滤波器 2.1 LEE滤波器原理 LEE滤…

Linux Debian12将本地项目上传到码云(gitee)远程仓库

一、注册码云gitee账号 这个可以参考其他教程&#xff0c;本文不做介绍。 gitee官网&#xff1a;https://gitee.com/ 二、Linux Debian12安装git 如果Linux系统没有安装git&#xff0c;可以使用下面命令安装git sudo apt install git 三、gitee新建仓库 我这只做测试&…

关于el-date-picker组件修改输入框以及下拉框的样式

因为业务需求&#xff0c;从element plus直接拿过来的组件样式和整体风格不搭&#xff0c;所以要修改样式&#xff0c;直接deep修改根本不生效&#xff0c;最后才发现el-date-picker组件有一个popper-class属性&#xff0c;通过这个属性我们就能够修改下拉框的样式&#xff0c;…

SpringMVC之CRUD(直接让你迅速完成部署)

一、项目创建 首先创建一个基于maven的项目部署&#xff0c;如果有些插件没有的话可以参考mybatis入门Idea搭建 二、配置依赖导入 依赖导入 1、pom.xml 需要根据自己的文件来进行导入&#xff0c;并不是原本照着导入 <project xmlns"http://maven.apache.org/POM/4.0.0…

安防视频监控平台EasyCVR可视化管理平台助力森林公园安全

EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等&#xff0c;视频智能分析平台EasyCVR融合性强、开放度高、部署轻快&#xff0c;在智慧工地、智慧园区…

macOS Ventura 13.5.2(22G91)发布,附黑/白苹果镜像下载地址

系统介绍&#xff08;下载请百度搜索&#xff1a;黑果魏叔&#xff09; 黑果魏叔 9 月 8 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5.2 更新&#xff08;内部版本号&#xff1a;22G91&#xff09;&#xff0c;本次更新距离上次发布隔了 21 天。 本次更新查…

【备忘】清理Office缓存

【背景】电脑安装了M365 Apps for enterprise的客户端&#xff0c;遇到不常见的奇怪问题。尝试看清理缓存是否可以解决。 【清理步骤】 1. 关闭所有Office365 应用&#xff1b; 2. 搜索 %AppData% &#xff0c;并打开该文件夹&#xff1b; 3. 进到 AppData > Local > M…

单片机控制直流电机

硬件电路 芯片 单片机的GPIO不能直接连接电机&#xff0c;IO的电流不够或者会烧坏芯片&#xff0c;需要连接一个驱动芯片 &#xff0c;ULN2003 是输入高&#xff0c;输出为低 ULN2003 要输出高电平&#xff0c;必须在输出口外接上拉电阻&#xff0c;所以 将 ULN2003 的 2 个输…

UMA 2 - Unity Multipurpose Avatar☀️四.UMA人物部位的默认颜色和自定义(共享)颜色

文章目录 🟥 人物颜色介绍1️⃣ 使用默认颜色2️⃣ 使用自定义颜色🟧 UMA自定义颜色的作用🟨 自定义颜色还可作为共享颜色🟥 人物颜色介绍 UMA不同部位的颜色分为默认的内置颜色和我们新定义的颜色. 1️⃣ 使用默认颜色 比如不勾选UseSharedColor时,使用的眼睛的默认…

uni-app 之 uni.request 网络请求API接口

uni-app 之 uni.request 网络请求API接口 image.png <template><!-- vue2的<template>里必须要有一个盒子&#xff0c;不能有两个&#xff0c;这里的盒子就是 view--><view>--- uni.request 网络请求API接口 ---<view><!-- 免费的测试接口 --…

iOS左对齐自动换行collection样式

前言 想必大家工作中或多或少会遇到下图样式的UI需求吧 像这种cell长度不固定&#xff0c;以此向右对齐排列的样式UI可以说是很常见的 实现方式 一般的实现可能主要是分一下两种&#xff1a; 1、一种是用button依次排列实现&#xff0c;动态计算text宽度&#xff0c;记录之…

【数据结构初阶】二、 线性表里的顺序表

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 【数据结构初阶】一. 复杂度讲解_高高的胖子的博客-CSDN博客 1 . 线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实…

Top 15 开源3D分子蛋白质建模与渲染软件

如今&#xff0c;WebGL 是一种趋势技术&#xff0c;因为它允许开发人员使用现代浏览器作为客户端来创建复杂的 3D 交互式图形、游戏&#xff0c;而无需安装额外的插件、扩展或软件。 WebGL允许浏览器直接与GPU&#xff08;图形处理单元&#xff09;一起工作。 推荐&#xff1a;…

Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内的方位角

场景 Java中使用JTS对空间几何计算(读取WKT、距离、点在面内、长度、面积、相交等)&#xff1a; Java中使用JTS对空间几何计算(读取WKT、距离、点在面内、长度、面积、相交等)_jts-core_霸道流氓气质的博客-CSDN博客 JavaGeoTools实现WKT数据根据EPSG编码进行坐标系转换&…

分布式、锁、延时任务

1. redission 2.zk 2.1 指令 ls / / 下有哪些子节点 get /zookeeper 查看某个子节点内容 create /aa “test” delete /aa set /aa “test01” 2.2 创建节点 模式 默认创建永久 create -e 创建临时 create -e /zz “hello zz” create -s 创建 有序节点 create -s -e 临…