docker 安装gitlab,配置邮件,备份全流程

简介: docker 安装gitlab,配置邮件,备份全流程

前言


今天折腾了下docker安装和配置gitlab,并实现2台服务器之间的免密登录和备份。全流程如下:


docker安装gitlab


创建存储目录,日志目录、配置目录

mkdir -p /home/gitlab/{data,log,etc}


拉取镜像


docker pull twang2218/gitlab-ce-zh:11.1


启动容器


docker run -d --publish 8090:8090 --publish 2222:22 --name gitlab --privileged=true --restart=always -e TZ=Asia/Shanghai -v /home/gitlab/etc:/etc/gitlab -v /home/gitlab/log:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab twang2218/gitlab-ce-zh:11.1

借鉴链接:https://juejin.cn/post/7084758138414923813


配置gitlab.rb


进入容器


docker exec -it gitlab /bin/bash


vi /etc/gitlab/gitlab.rb


http使用的端口以及在项目工程显示的 http 下载路径中使用

external_url 'http://公网IP[或域名]:8090'

比如公网ip为: 10.14.114.08


项目工程显示的 ssh 地址和端口

gitlab_rails['gitlab_ssh_host'] = '10.14.114.08'

gitlab_rails['gitlab_shell_ssh_port'] = 2222


时区

gitlab_rails['time_zone'] = 'Asia/Shanghai'


保存备份 30 天

gitlab_rails['backup_keep_time'] = 2592000


配置邮件


gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "690328661@qq.com"
gitlab_rails['smtp_password'] = "您的qq邮箱授权码"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '690328661@qq.com'



将这个也配置在gitlab.ra中。


执行重载配置文件


gitlab-ctl reconfigure


防火墙和阿里云配置规则端口放开


此处略。但是很重要,也很简单,不写了。


启动和创建用户和常用设置


首先为 root 用户设置密码,root 用户将作为 GitLab 的管理员

66ba272a0bfc97be54a5fa679e3d5482.png

修改登录页面提示

46a9d80a6e05e4e3b19d57a0ee70bcdf.png66ba272a0bfc97be54a5fa679e3d5482.png


取消头像显示

不取消会显示异常

5d4c6812c8535adbb050f4ddf2e1bce8.png

取消注册功能

在公司内网使用,无需注册功能,账号通过管理员添加

1dc618a0ed9580ce8bfa6facb208c08f.png

增加新用户


46a9d80a6e05e4e3b19d57a0ee70bcdf.png

66ba272a0bfc97be54a5fa679e3d5482.png


用户根据邮件进入gitlab


上面填完之后,用户邮箱会自动收到一份邮件.

1dc618a0ed9580ce8bfa6facb208c08f.png

点击会进入设置密码的节目,设置下,重新登录即可。


2台服务器的免密登录设置


设置这个的目的是: 有2台服务器,部署这台gitlab服务器的定时生成备份数据,通过scp命令传递到另一台服务器上。如果这台gitlab挂了,可以重启用备份的数据还原之前的数据。


参考: https://blog.csdn.net/weixin_40363423/article/details/115216886


操作如下:

在gitlab台服务器上分别执行

cd /root/.ssh

cd authorized_keys

ssh-keygen -t rsa 然后一路enter即可。

scop id_rsa.pub 备份服务器IP:/rsa (前提 在根目录下创建rsa目录,创建其他文件夹也可以)

在备份数据服务器上分别执行

cd /root/.ssh

cd authorized_keys

ssh-keygen -t rsa 然后一路enter即可。

scop id_rsa.pub gitlab服务器IP:/rsa (前提 在根目录下创建rsa目录,创建其他文件夹也可以)

最终,在两台服务器上看到这样就成功了:


1dc618a0ed9580ce8bfa6facb208c08f.png


备份脚本和备份定时任务设置


创建备份文件

docker exec gitlab gitlab-rake gitlab:backup:create

1dc618a0ed9580ce8bfa6facb208c08f.png

生成的备份文件为:1656474061_2022_06_29_11.1.4_gitlab_backup.tar,所在目录为:/home/gitlab/data/backups


定时备份


创建定时备份脚本 /home/auto_backup.sh


执行备份命令

docker exec gitlab gitlab-rake gitlab:backup:create


将备份文件拷贝到备用机器的 GitLab 数据目录下

scp -r /home/gitlab/data/backups root@192.168.0.154:/home/gitlab/data/backups


1dc618a0ed9580ce8bfa6facb208c08f.png


添加定时任务

vim /etc/crontab

# 每天备份两次, 12 点和 18 点各一次
0 12,18 * * * root sh /home/auto_backup.sh CRON=1


1dc618a0ed9580ce8bfa6facb208c08f.png


重新加载定时器

service crond reload

service crond restart


模拟备份还原操作


参考链接:https://juejin.cn/post/7084758138414923813


注意:在从机器上必须按照上面的安装和配置步骤提前安装好 GitLab,然后登录root用户没有问题后,然后执行以下步骤进行仓库恢复,以下操作均在从机器上执行:


将备份文件拷贝到要恢复的机器(从机器)的 GitLab 数据目录下。

5d4c6812c8535adbb050f4ddf2e1bce8.png

上面的定时任务如果没问题这一步就可以省略了


进入 GitLab 容器,执行以下恢复命令


进入容器

docker exec -it gitlab /bin/bash


停止相关数据连接服务

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq


为备份文件赋予执行权限


chmod -R 7777 /var/opt/gitlab/backups


cd /var/opt/gitlab/backups


备份文件编号备份的 tar 包数字部门,例如:1656474061_2022_06_29_11.1.4_gitlab_backup.tar,编号为:11656474061_2022_06_29_11.1.4

gitlab-rake gitlab:backup:restore BACKUP=备份文件编号

1dc618a0ed9580ce8bfa6facb208c08f.png

gitlab-ctl start


我这里只是在原来的gitlab服务器上创建了个用户,执行完备份后,也显出来了。说明备份成功!!!

1dc618a0ed9580ce8bfa6facb208c08f.png



相关文章
|
7月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
7月前
|
Kubernetes 关系型数据库 文件存储
手把手教你完成极空间 NAS Docker 镜像加速配置
本教程详细介绍了如何在极空间NAS上配置轩辕镜像加速器,以提升Docker镜像的下载速度与稳定性。内容涵盖账号注册、网络确认、加速器设置及验证方法,并提供常见问题解决方案,帮助用户高效完成容器化应用部署。
2666 1
|
4月前
|
网络安全 开发工具 git
在GitLab CI中同步HTTPS仓库地址的yaml配置
最后,提交并推送 `.gitlab-ci.yml`文件到您的GitLab仓库。GitLab CI/CD将自动识别这个文件,并在每次推送到 `master`分支时执行定义的同步任务。
216 16
|
5月前
|
关系型数据库 数据库 PostgreSQL
docker 安装 Postgres 17.6
本文介绍如何通过Docker安装和配置PostgreSQL 17.6。内容包括拉取镜像、导出配置文件、运行容器并挂载数据与配置文件目录,以及进入容器使用psql操作数据库的完整步骤,便于持久化管理和自定义配置。
665 3
docker 安装 Postgres 17.6
|
4月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
602 5
|
4月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
429 2
|
7月前
|
文件存储 数据安全/隐私保护 开发者
群晖NAS Docker镜像源加速配置教程
本教程介绍了群晖NAS用户如何通过配置轩辕镜像加速服务提升Docker镜像拉取速度。内容包括配置前准备、详细设置步骤及日常使用说明,帮助用户快速完成配置并享受高效稳定的镜像下载体验。
4599 60
|
Docker 容器 文件存储
飞牛fnOS Docker镜像加速配置全攻略
本文介绍了如何在飞牛fnOS中配置Docker镜像加速服务,通过设置轩辕镜像仓库加速器,提升镜像拉取速度与稳定性。内容涵盖配置前准备、加速源设置、首选加速源调整及使用指南,帮助用户高效完成镜像操作。
4656 56
|
6月前
|
域名解析 弹性计算 运维
一键部署 GitLab 代码托管平台:告别繁琐配置,ROS 模板轻松搞定
本文介绍如何使用阿里云资源编排服务(ROS)一键部署GitLab代码托管平台,解决手动部署的复杂性问题。通过ROS模板可实现标准化配置、自动化执行和快速部署等优势,5-10分钟内即可完成整个流程。部署步骤包括准备ROS模板(含ECS实例、安全组规则等配置)、自动创建VPC网络和安全组,并预装GitLab服务。该方案支持按需创建资源,显著提升部署效率并降低运维成本,为团队快速构建高效的开发协作环境。
一键部署 GitLab 代码托管平台:告别繁琐配置,ROS 模板轻松搞定