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


配置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 的管理员
  • 修改登录页面提示

  • 取消头像显示
    不取消会显示异常
  • 取消注册功能
    在公司内网使用,无需注册功能,账号通过管理员添加
  • 增加新用户

用户根据邮件进入gitlab

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

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

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目录,创建其他文件夹也可以)

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

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

  • 创建备份文件
    docker exec gitlab gitlab-rake gitlab:backup:create

    生成的备份文件为: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

  • 添加定时任务
    vim /etc/crontab
# 每天备份两次, 12 点和 18 点各一次
0 12,18 * * * root sh /home/auto_backup.sh CRON=1

  • 重新加载定时器
    service crond reload
    service crond restart

模拟备份还原操作

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

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

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

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

  • 进入 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=备份文件编号

gitlab-ctl start

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



大功告成!!

相关文章
|
7天前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
76 42
|
1月前
|
弹性计算 Ubuntu Linux
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS自动化部署。支持Ubuntu 22.04/20.04、CentOS 7.7-7.9及Alibaba Cloud Linux 3.2104 LTS。前提条件:ECS实例需运行中且有公网。步骤:选择Docker扩展并安装,验证成功通过命令`docker -v`查看版本号。
288 79
|
11天前
|
Linux Docker 容器
安装docker-18.06报错Error: libseccomp conflicts with docker-18.06
通过这些步骤,您可以成功在CentOS上安装Docker 18.06,并解决libseccomp的冲突问题。这些方法确保系统兼容性,并保证Docker的正常运行。
52 27
|
1天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
50 14
|
1天前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
43 20
|
2月前
|
NoSQL 关系型数据库 应用服务中间件
docker基础篇:安装tomcat
docker基础篇:安装tomcat
184 64
|
28天前
|
前端开发 应用服务中间件 nginx
docker安装nginx,前端项目运行
通过上述步骤,你可以轻松地在Docker中部署Nginx并运行前端项目。这种方法不仅简化了部署流程,还确保了环境的一致性,提高了开发和运维的效率。确保按步骤操作,并根据项目的具体需求进行相应的配置调整。
112 25
|
28天前
|
安全 数据安全/隐私保护 Docker
docker私有仓库harbor安装
通过以上步骤,您可以成功在企业内部安装和配置Harbor私有仓库,方便地管理和分发Docker镜像。Harbor不仅提供了基础的镜像管理功能,还增强了安全性、身份管理和审计功能,使其成为企业级容器镜像管理的理想选择。
90 22
|
1月前
|
Ubuntu NoSQL 关系型数据库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
123 29
|
2月前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
121 14