Docker部署GitLab代码管理平台

文章目录

  • 1.创建存放gitlab数据的目录
  • 2.docker启动gitlab容器
  • 3.修改gitlab的下载代码的路径地址
  • 4.备份
  • 5.恢复

官方地址:https://docs.gitlab.com/ee/install/docker.html

1.创建存放gitlab数据的目录

[root@k8s-master ~]# mkdir /home/fands
[root@k8s-master ~]# mkdir /home/fands/data

2.docker启动gitlab容器

如下是docker启动gitlab的命令,可以将其写到sh文件中方便后续重建;

#gitlab-docker-run.sh
GITLAB_HOME=/home/fands/data/gitlab
docker run -itd \
  --hostname gitlab.ctnrs.com \
  --publish 443:443 \
  --publish 88:80 \
  --publish 2222:22 \
  --name=gitlab \
  --restart=always \
  -volume $GITLAB_HOME/config:/etc/gitlab \
  -volume $GITLAB_HOME/logs:/var/log/gitlab \
  -volume $GITLAB_HOME/data:/var/opt/gitlab \
  gitlab/gitlab-ce:13.12.5-ce.0
  • GITLAB_HOME:本地存放gitlab数据的目录
  • –hostname:设置主机名
  • –publish 443:443:将gitlab容器的443端口映射到本地的443端口
  • –publish 88:80:同理将容器的80端口映射到本地的88端口
  • –publish 2222:22:同理将容器的22端口映射到本地的2222端口(22端口用作于gitlab的ssh git下载代码)
  • –name:容器名称
  • –restart=always:容器重启策略,always代表总是重启
  • -volume $GITLAB_HOME/config:/etc/gitlab:数据持久化,将容器内的gitlab的数据目录/etc/gitlab 持久化到 本地存放gitlab数据的目录里
  • -volume $GITLAB_HOME/logs:/var/log/gitlab:数据持久化,将容器内的gitlab的数据目录/var/log/gitlab 持久化到 本地存放gitlab数据的目录里
  • -volume $GITLAB_HOME/data:/var/opt/gitlab:数据持久化,将容器内的gitlab的数据目录/var/opt/gitlab 持久化到 本地存放gitlab数据的目录里

在这里插入图片描述

然后访问使用宿主机IP和88端口去访问gitlab,我这里是http://10.8.0.7:88/,gitlab启动时间会很长,需要3-5分钟大家耐心等待…

安装完后需要设置gitlab的管理员用户密码
在这里插入图片描述

登陆gitlab
在这里插入图片描述

3.修改gitlab的下载代码的路径地址

默认为hostname主机名
在这里插入图片描述
示例修改为:gitlab.study.com

#修改gitlab主配置文件(目录为持久化到本地的gitlab数据目录)
#/home/fands/data/gitlab/config/gitlab.rb
修改:
external_url 'http://gitlab.study.com'

然后保存重启gitlab容器

[root@bogon ~]# docker ps 
CONTAINER ID   IMAGE                           COMMAND             CREATED          STATUS                    PORTS                                                                                                             NAMES
069d710325d7   gitlab/gitlab-ce:13.12.5-ce.0   "/assets/wrapper"   49 minutes ago   Up 22 minutes (healthy)   0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:2222->22/tcp, :::2222->22/tcp, 0.0.0.0:88->80/tcp, :::88->80/tcp   gitlab
[root@bogon ~]# docker restart gitlab

再重新看下下载代码的地址
在这里插入图片描述

4.备份

docker方式部署的gilab备份及其的简单,直接将容器持久化到本地的gitlab数据目录备份即可,或直接将这个目录拷贝到其他机器上直接docker run启动 都是没有问题的,不会丢失数据!

例如:我这里的数据目录为:/home/fands/data/gitlab

自动备份脚本如下

#bak.sh
#!/bin/bash
set -e 
#持久化到本地的gitlab数据目录
GITLAB_DIR=/home/fands/data/

BACKUP_DIR=/root/backup

BACKUP_TIME=`date +%Y_%m_%d`

if [ ! -d "$BACKUP_DIR" ];then
  echo "备份目录"$BACKUP_DIR"不存在,请创建"
  exit 1
else 
  echo "开始执行备份"
  cd $GITLAB_DIR
  tar -zcf $BACKUP_DIR/gitlab_bak_"$BACKUP_TIME".tar.gz gitlab  2>/dev/null
  if [ $? == 0 ];then
    echo "备份成功"
    echo "备份文件为:$BACKUP_DIR/gitlab_bak_"$BACKUP_TIME".tar.gz"
  else 
    echo "备份失败"
    exit 1
  fi
fi

crontab定时执行

0 3 * * * sh /root/bak.sh 1>>/root/bak_logs/gitlab_bak.log 2>&1

5.恢复

上面实现了每天进行备份gitlab,如若恢复的话,直接解压最近的备份文件,接着覆盖gitlab的持久化目录 然后重启gitlab容器即可;

#解压备份文件
[root@bogon backup]# tar -zxf gitlab_bak_2024_04_18.tar.gz
[root@bogon backup]# ll 
总用量 22820
drwxr-xr-x. 5 root root       44 418 14:13 gitlab
-rw-r--r--. 1 root root 23367068 418 16:58 gitlab_bak_2024_04_18.tar.gz

#先将当前使用的数据目录重命名
[root@bogon backup]# mv /home/fands/data/gitlab /home/fands/data/gitlab.bak 

#将解压好的备份目录移动到备份目录下
[root@bogon backup]# mv gitlab /home/fands/data/

#重启gitlab容器
[root@bogon backup]# docker ps 
[root@bogon backup]# docker restart gitlab

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习java时候的笔记(十七)

Runtime Runtime表示当前虚拟机的运行环境 方法名说明getRuntime()当前系统的运行环境对象exit(int status)停止虚拟机availableProcessors()获得CPU的线程数maxMemory()JVM能从系统中获取总内存的大小(单位byte)totalMemory()JVM已经从系统中获取的总内存大小(单位byte)free…

【优质书籍推荐】《Effective Java》是人工智能的基石

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

线上生产环境报错TypeError: Cannot read properties of undefined (reading ‘refs‘)

今天遇到这个bug,本地运行都正常,就线上环境有问题。 最后定位到是一个component动态组件使用ref导致的。 具体是什么原因不清楚,代码是从别的地方搬过来的,由于没有用到ref,我把它删了就正常了。 不一定都是这样导致…

基于springboot实现智能物流管理系统设计项目【项目源码+论文说明】计算机毕业设计

基于springboot实现智能物流管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了智能物流管理系统的开发全过程。通过分析智能物流管理系统管理的不足,创建了一个计算机管理智能物流管理系…

k8s集群资源编排清单文件解读

1、YAML 文件概述 k8s集群中对资源管理和资源对象编排部署都可以通过声明样式(YAML)文件来解决,也就是可以把需要对资源对象操作编辑到 YAML 格式文件中,我们把这种文件叫做资源清单文件,通过 kubectl 命令直接使用资源…

Compose 基础组件

文章目录 Compose 基础组件Modifier 修饰符Scaffold 脚手架 Compose 基础组件 Modifier 修饰符 在传统视图体系中,使用XML文件描述组件的样式,而在Compose中使用Modifier,每个基础的Composable组件都有一个modifier参数,通过Mod…

Conmi的正确答案——JDK22运行js(基于Graal.js)

JDK版本:graalvm-jdk-22.0.18.1 1、进入官网:https://www.graalvm.org/ 2、点击下载 3、选择JDK版本 4、选择平台 5、选择下载 6、下载完成后,重回该页面,选中“Graal Projects”,选择“GraalJS” 7、选择“Try Now…

jenkin构建项目并使用docker部署发布

将打包好的jar包和Dockerfile复制到/root/app/qilaike-admin shell脚本 #!/bin/bash#DATE$(date %Y%m%d)cd /root/app/qilaike-admin#检查容器是否存在 if [ x"$(docker ps -a | awk ($2 ~ /qilaike-admin:*/) {print $1})" ! x"" ]; then# shellcheck di…

线程池学习(通俗易懂)

线程池 线程池是什么ThreadPoolExecutor模拟实现线程池结语 线程池是什么 假设我们要频繁的创建线程和销毁线程,但是创建线程和销毁线程是有成本的. 所以我们可以提前创建一批线程,后面需要使用的时候,直接拿就可以了,这就是线程池. 当线程不再使用的时候,就归还到池子里.为什…

2.8 构建gradle环境

构建gradle环境 目录一、安装Java Development Kit (JDK)二、下载Gradle三、解压Gradle四、配置环境变量五、验证安装六、gradle构建java项目七、eclipse配置gradle 目录 一、安装Java Development Kit (JDK) Gradle是基于Java开发的,所以首先需要安装JDK。你可以从…

Dragonfly Topology 蜻蜓网络拓扑

蜻蜓拓扑 Dragonfly Topology 1. 拓扑参数2. Topology Description 拓扑描述3. Topology Variations 拓扑变体 蜻蜓拓扑 Dragonfly Topology 1. 拓扑参数 Dragonfly拓扑参数: N N N: 网络中终端(terminal)的总数量 p p p: 连接到每个路由器的终端数量 a a a: 每…

类加载子系统

一.类加载子系统的作用 类加载子系统(Class Loading Subsystem)是Java虚拟机的一个重要组成部分,它将Class文件加载到内存中。不同语言程序可以使用编译器生成符合JVM规范的Class文件,Class文件要求在文件开头有特定的文件标识。…

湖仓一体(Lakehouse)架构的核心组件之存储层——Lakehouse 架构(三)

文章目录 前言Lakehouse 存储关键概念行存储与列存储基于存储的查询性能优化 Lakehouse 存储组件云储存文件格式Apache ParquetApache ORCApache Avro相似点和差异点 表格格式Apache HiveIceberg特性和优点 Apache Hudi特性和优点 Delta Lake特性和优点 相似点和差异点 总结 前…

李沐51_序列数据——自学笔记

1.时序模型中,当前数据跟之前观察到的数据相关 2.自回归模型使用自身过去数据来预测未来 3马尔可夫模型假设当前只跟最近少数数据相关,从而简化模型 4.潜变量模型使用潜变量来概括历史信息 生成一些数据:使用正弦函数和一些可加性噪声来生…

【OpenGL开发】PyQt在关闭应用程序时没有运行析构函数的问题

PyQt在关闭应用程序时没有运行析构函数的问题 目录 一、说明二、python的析构函数三、通用版QT5 存在一些问题四、python版PyQt5 存在一些问题五、OpenGL的析构问题5.1 OpenGL很脆弱,这不是危言耸听5.2 以上OpenGL问题解决方法六、一些保留意见一、说明 应用QT做程序界面,在…

工业自动化的未来:UWB模块驱动下的生产优化

随着工业自动化技术的不断发展,UWB技术正在成为工业生产优化的关键驱动力之一。UWB模块作为UWB技术的核心组成部分,具有精准定位、抗干扰、快速响应等特点,为工业自动化提供了新的解决方案和发展机遇。本文将探讨UWB模块驱动下的工业生产优化…

ug钣金展开图教程

UG钣金件如何展平,ug钣金展开步骤?一起来探讨。 第一步:准备一个钣金零件图档(如下图)我们需要进入UG开始-所以应用模块-钣金-NX钣金。 要把这个零件转化为钣金零件,这样才可以进行下一步骤展开。选择转化为钣金,在基本面选择任意一个零件表…

Mysql基础知识学习总结

文章目录 一.数据库的相关概念二.关系模型的核心概念三.SQL分类四.SQL语句注释命令行连接Mysql客户端desc基本用法输出解释示例 show基本用法显示数据库列表显示当前数据库中的表显示表的列信息显示表的索引信息显示服务器状态和系统变量显示创建表的SQL语句显示当前的权限 sel…

遇事不决 量子力学?

文章目录 引入量子力学产生的必然性量子力学名称的由来粒子?波?波粒二象性测不准原理 (不确定原理)叠加态原理 量子纠缠态叠加量子纠缠量子纠缠实验 逻辑判断,量子力学到底完善吗观测量子纠缠?那我们宏观世…

idea中停止运行Vue

在里面敲入Ctrlc 输入y确定即可。