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



相关文章
|
3月前
|
Prometheus 监控 Cloud Native
Prometheus配置docker采集器
本文介绍了如何使用 Prometheus 监控 Docker 容器,涵盖环境准备、配置文件编写及服务启动等步骤。首先确保安装 Docker 和 Docker Compose,接着通过 `docker-compose.yml` 配置 Prometheus 和示例应用。创建 `prometheus.yml` 指定数据采集目标,最后用 `docker-compose up -d` 启动服务。文章还展示了甘特图和类图,帮助理解服务状态与关系,助力提升系统可靠性和可维护性。
119 11
|
3月前
|
存储 安全 C++
Odoo 安装方式选择:源码安装 vs Docker
Odoo部署常采用源码编译或Docker容器化,但分别面临依赖复杂、版本风险和服务化难题,以及镜像臃肿和扩展受限的问题。Websoft9提出混合方案,融合两者优势:通过智能环境适配、三阶段部署流程(环境预检、混合模式选择、持久化配置)及声明式YAML配置,实现高效、灵活的双模运行时。此方案显著降低依赖冲突解决时间(从83分钟至0),生产环境构建耗时缩短至8分钟,并达100% CVE漏洞修复率,适合ERP定制开发与规模化部署的企业需求。
|
1月前
|
存储 Ubuntu Docker
Ubuntu 安装 docker
本文介绍了在 Ubuntu 系统上安装 Docker 的详细步骤,包括卸载旧版本、设置 Docker 官方存储库、安装 Docker 包以及配置镜像源加速。首先通过移除旧版组件如 `docker.io` 和 `docker-compose` 等进行清理,然后添加官方 GPG 密钥并配置 APT 源,接着安装最新 Docker 组件。此外,还提供了阿里云和 1Panel 的镜像源配置方法以提升下载速度,并通过运行 `hello-world` 镜像测试安装是否成功。
787 3
Ubuntu 安装 docker
|
22天前
|
Ubuntu 安全 数据安全/隐私保护
在Docker容器中部署GitLab服务器的步骤(面向Ubuntu 16.04)
现在,你已经成功地在Docker上部署了GitLab。这就是我们在星际中的壮举,轻松如同土豆一样简单!星际旅行结束,靠岸,打开舱门,迎接全新的代码时代。Prepare to code, astronaut!
97 12
|
1月前
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
67 1
|
2月前
|
关系型数据库 MySQL 数据库
Docker 安装常用软件相关命令
本文介绍了在CentOS 7.9系统上安装Docker的详细步骤,包括添加阿里云镜像源、安装Docker及相关组件、启动服务以及配置镜像加速。同时,还展示了如何通过Docker安装MySQL 5.7版本数据库,涵盖拉取镜像、创建数据目录、运行容器及配置挂载点等操作,并提供验证安装成功的命令和截图。适合需要部署Docker与MySQL环境的用户参考。
204 5
|
2月前
|
存储 弹性计算 Linux
安装Docker
常见操作系统安装docker步骤
178 15
|
2月前
|
Docker 容器
在openEuler 22.03 LTS上安装Docker CE和Docker Compose
以上就是在openEuler 22.03 LTS上安装Docker CE和Docker Compose的过程。希望这个指南能帮助你顺利完成安装。
422 12
|
3月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
185 28
|
3月前
|
Linux 虚拟化 Docker
win11怎么安装docker的必要设置自学软硬件工程师778天
win11怎么安装docker的必要设置自学软硬件工程师778天
win11怎么安装docker的必要设置自学软硬件工程师778天