当前位置: 首页 > news >正文

gitlab docker部署,备份,恢复。附踩坑记录

本次安装在CentOS7下进行

1、安装yum

检查是否已经安装yum

yum --version

如果未安装

sudo yum install -y yum-utils

添加镜像源:

  • 国外镜像源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 阿里镜像源:yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/decker-ce.repo

2、安装docker

  • 安装最新版本(默认):yum install docker-ce
  • 安装指定版本:yum install docker-ce-20.10.9-3.el7

配置开机启动:

  • 启动docker:systemctl start docker
  • 配置开机启动:systemctl enable docker
  • 查看docker版本:docker version

3、docker部署gitlab

拉取最新gitlab镜像

方式一:直接使用最新版本镜像

  • docker pull gitlab/gitlab-ce:latest

方式二:使用指定版本镜像,这里使用了13.10.0版本 (教程使用的此方式)

  • docker pull gitlab/gitlab-ce:13.10.0-ce.0

创建映射文件目录

# 映射配置文件夹
mkdir -p /home/gitlab/conf
# 映射日志文件夹
mkdir -p /home/gitlab/logs
# 映射数据文件夹
mkdir -p /home/gitlab/data

运行docker容器

最好不要使用80端口,使用了也没问题后面会教你更改

 后面会改成 --publish 50055:50055  \
# 主机名、端口映射、目录映射、gitlab版本 需自行修改
sudo docker run --detach \--hostname ip地址 \--publish 50055:80  \--name gitlab \--restart always \--volume /data/gitlab/conf:/etc/gitlab \--volume /data/gitlab/logs:/var/log/gitlab \--volume /data/gitlab/data:/var/opt/gitlab \--shm-size 256m \--privileged=true gitlab/gitlab-ce:13.10.0-ce.0
一劳永逸版
sudo docker run --detach \--hostname ip地址 \--publish 50055:50055  \--name gitlab \--restart always \--volume /data/gitlab/conf:/etc/gitlab \--volume /data/gitlab/logs:/var/log/gitlab \--volume /data/gitlab/data:/var/opt/gitlab \--shm-size 256m \--privileged=true gitlab/gitlab-ce:13.10.0-ce.0修改gitlab服务端口号:vim /etc/gitlab/gitlab.rbexternal_url 'http://ip:50055'使用命令进行更新配置:gitlab-ctl reconfigure

查看防火墙

查看开放的端口号
firewall-cmd --list-all开放指定端口
sudo firewall-cmd --add-port=50055/tcp --permanent重启防火墙(设置完一定要重启防火墙):
firewall-cmd --reload现在外部就可以访问这些端口了

4、备份

注意这里gitlab的版本,后面恢复是要保证版本一致的

# 查看容器id
docker ps# 进入容器 示例:docker exec -it -i 4c97d29eee9b /bin/bash
docker exec -it -i <这里是容器id> /bin/bash# 执行备份命令
gitlab-rake gitlab:backup:create

备份文件可在 /data/gitlab/data/backups找到

5、恢复

要注意恢复版本要和备份版本保持一致

# 把第一台服务器备份的 xxx_gitlab_backup.tar 文件拷贝到新gitlab的/data/gitlab/data/backups目录中# 进入容器 示例:docker exec -it -i 4c97d29eee9b /bin/bash
docker ps
docker exec -it -i <这里是容器id> /bin/bash
# 修改权限
chmod 777 /var/opt/gitlab/backups/1682571554_2023_04_27_13.5.4_gitlab_backup.tar
chown -R git:git /var/opt/gitlab/backups/1682571554_2023_04_27_13.5.4_gitlab_backup.tar# 恢复备份文件前,先停止容器内相关数据连接服务
gitlab-ctl stop puma
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq# 最好修改下数据权限,不然恢复容易报错
# 修改postgresql配置
vi /var/opt/gitlab/postgresql/data/postgresql.conf
# 如下修改:
listen_addresses = '*'# 修改pg_hba配置
vi /var/opt/gitlab/postgresql/data/pg_hba.conf
# 最后添加:
local   all         all                               trust
host    all         all                               127.0.0.1/32 trust# 重启gitlab服务
gitlab-ctl restart# 修改gitlab账号为超级用户
su - gitlab-psql
/opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
ALTER USER gitlab WITH SUPERUSER;
\q
exit# 恢复备份文件前,先停止容器内相关数据连接服务
gitlab-ctl stop puma
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq# 恢复备份, 后面的数字是 1682571554_2023_04_27_13.5.4_gitlab_backup.tar文件的前面一部分
gitlab-rake gitlab:backup:restore BACKUP=1682571554_2023_04_27_13.5.4# 重启服务
gitlab-ctl restart# 拷贝配置文件
cp gitlab-secrets.json /data/gitlab/conf/
cp gitlab.rb /data/gitlab/conf/# 重启服务
gitlab-ctl restart

修改服务端口号

由于使用的80端口映射,导致gitlab克隆没有端口号,拉不了代码。

解决方法

1、修改服务的端口号
修改gitlab服务端口号:vim /etc/gitlab/gitlab.rb

external_url 'http://ip:50055'使用命令进行更新配置:gitlab-ctl reconfigure

2、进入gitlab容器
修改配置文件gitlab.yml,修改host 与上面.rb文件修改的一致

cd /opt/gitlab/embedded/service/gitlab-rails/config

在这里插入图片描述
重启服务

gitlab-ctl restart

3、修改docker容器映射端口,也就是上面docker run 使用的80端口

在这里插入图片描述
修改 hostconfig.json 文件,找到如下配置,可以添加想要开放的端口

"PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"80"}],"8088/tcp":[{"HostIp":"","HostPort":"8088"}]
}

修改 config.v2.json 文件,找到如下配置,可以添加想要开放的端口

"ExposedPorts":{"80/tcp":{},"8088/tcp":{}}

注:并不需要修改Ports,只有在你没有stop容器时,Ports才会有值,如果关闭了容器,就是null。当然如果你修改了也无所谓,因为重启容器后,就会被刷新。

重启docker和容器即可
重启docker命令如下:

systemctl start docker

相关文章:

gitlab docker部署,备份,恢复。附踩坑记录

本次安装在CentOS7下进行 1、安装yum 检查是否已经安装yum yum --version如果未安装 sudo yum install -y yum-utils添加镜像源&#xff1a; 国外镜像源&#xff1a;yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo阿里镜像源&am…...

2023品牌新媒体矩阵营销洞察报告:流量内卷下,如何寻找增长新引擎?

近年来&#xff0c;随着移动互联网的发展渗透&#xff0c;短视频、直播的兴起&#xff0c;新消费/新零售、兴趣电商/社交电商等的驱动下&#xff0c;布局线上渠道已成为绝大多数品牌的必然选择。 2022年&#xff0c;越来越多的品牌加入到自运营、自播的行列中&#xff0c;并且从…...

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Toggle

组件提供勾选框样式、状态按钮样式及开关样式。该组件从API Version 8开始支持。 仅当ToggleType为Button时可包含子组件。 一、接口 Toggle(options: { type: ToggleType, isOn?: boolean }) 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 参数: Toggle…...

redis,mongoDB,mysql,Elasticsearch区别

Redis&#xff1a; Redis是一种高性能键值存储数据库&#xff0c;基于内存操作&#xff0c;支持数据持久化&#xff0c;支持数据类型丰富灵活&#xff0c;如字符串、哈希、列表、集合、有序集合等。Redis还提供了订阅/发布、事务、Lua脚本、主从同步等功能&#xff0c;适用于访…...

什么是软件测试架构师?

软件测试架构师是一个新职位&#xff0c;但确实是一个非常必要的职位&#xff0c;主要有几点&#xff1a; 1. 根据V模型、广义测试概念等&#xff0c;(静态)测试的越早&#xff0c;发现缺陷越早&#xff0c;越有利于产品的质量、加快产品开发周期、降低企业的成本。更重要预防…...

安科瑞ARB5系列弧光保护装置,智能电弧光保护,保障用电安全

安科瑞虞佳豪壹捌柒陆壹伍玖玖零玖叁 什么是弧光 电弧是放电过程中发生的一种现象&#xff0c;当两点之间的电压超过其工频绝缘强度极限时就会发生。当适当的条件出现时&#xff0c;一个携带着电流的等离子产生&#xff0c;直到电源侧的保护设备断开才会消失。空气在通常条件…...

查找算法——二分查找法

一、介绍 首先需要将查找的数据排好序&#xff0c;再进行二分查找法来进行查找&#xff0c;二分查找是将数据范围不断分割为两份&#xff0c;不断比较中间值与待查找值的大小来确定其在哪个区间范围的一种方法。例如&#xff1a;在一组数据&#xff08;1&#xff0c;4&#xff…...

大数据——Spark Streaming

是什么 Spark Streaming是一个可扩展、高吞吐、具有容错性的流式计算框架。 之前我们接触的spark-core和spark-sql都是离线批处理任务&#xff0c;每天定时处理数据&#xff0c;对于数据的实时性要求不高&#xff0c;一般都是T1的。但在企业任务中存在很多的实时性的任务需求&…...

graphviz 绘制二叉树

代码 digraph BalancedBinaryTree {node [fontname"Arial", shapecircle, stylefilled, color"#ffffff", fillcolor"#0077be", fontsize12, width0.7, height0.7];edge [fontname"Arial", fontsize10, color"#333333", arr…...

STM32 PA15/JTDI 用作普通IO,烧录口不能使用问题解决

我们一般用SW调试接口 所以DEBUG选择Serial Wire 这样PA15可以用作普通IO使用。 工程中默认加上&#xff1a; PA13(JTMS/SWDIO).ModeSerial_Wire PA13(JTMS/SWDIO).SignalDEBUG_JTMS-SWDIO PA14(JTCK/SWCLK).ModeSerial_Wire PA14(JTCK/SWCLK).SignalDEBUG_JTCK-SWCLK...

【ARM Coresight 系列文章 9 -- ETM 介绍 1】

文章目录 ARM Coresight ETM 介绍1.1.1 ARM Coresight ETM 版本介绍1.1.2 ARM Coresight 常见术语1.2 ARM Coresight ETM 常用寄存器介绍1.2.1 TRCVIIECTLR(ViewInst Include-Exclude Control Register)1.2.2 TRCVISSCTLR(ViewInst Start/Stop Processing Element Comparator C…...

设计模式 - 中介者模式

目录 一. 前言 二. 实现 三. 优缺点 一. 前言 中介者模式又叫调停模式&#xff0c;定义一个中介角色来封装一系列对象之间的交互&#xff0c;使原有对象之间的耦合松散&#xff0c;且可以独立地改变它们之间的交互。 中介者模式可以使对象之间的关系数量急剧减少&#xff0…...

HttpServletRequest对象与RequestDispatcher对象

一、HttpServletRequest对象 1.介绍 在Servlet API中&#xff0c;定义了一个HttpServletRequest接口&#xff0c;它继承自ServletRequest接口&#xff0c;专门用来封装HTTP请求消息。由于HTTP请求消息分为请求行、请求消息头和请求消息体三部分&#xff0c;因此&#xff0c;在…...

Spring Boot启动流程

加载启动类&#xff1a;加了SpringBootApplication的启动类的main 方法中&#xff0c;通过运行SpringApplication.run()方法启动 【SpringBootApplication是由EnableAutoConfiguration&#xff08;导入自动配置AutoConfigurationSelector类从而加载加了Configuration的配置&am…...

ARM day5

三盏灯流水 .text .global _start _start: 1.LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0X1<<4)STR R1,[R0] 1.LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0X1<<5)STR R1,[R0] 2.LDR R0,0X50006000LDR R1,[R0]BIC R1,R1,#(0X3<<20)ORR R1,R1,#(0X1<<…...

流程引擎概述及组成

流程引擎概述及组成 一、流程引擎概述 流程&#xff0c;可以理解为步骤&#xff0c;一个有序的活动或动作&#xff1b; 引擎&#xff0c;可以理解为驱动&#xff0c;是一个程序或者一套系统。 所以&#xff0c;字面意思可以理解为&#xff0c;流程引擎是一套&#xff08;或…...

定时任务Apscheduler实践案例

定时任务Apscheduler实践案例 参考文章 https://blog.csdn.net/weixin_44799217/article/details/127353134 实现案例 本案例是使用定时任务apscheduler实现的每个三分钟发送一次邮件的任务 实现代码 import time from apscheduler.schedulers.blocking import BlockingSched…...

C#学习系列相关之多线程(五)----线程池ThreadPool用法

一、线程池的作用 线程池是一种多线程处理形式&#xff0c;处理过程中将任务添加到队列&#xff0c;然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认堆栈大小&#xff0c;以默认的优先级运行&#xff0c;并处于多线程单元中。如果某个线程在托管…...

京东数据接口|电商运营中数据分析的重要性

在电商运营中&#xff0c;数据分析是非常重要的一环&#xff0c;它可以帮助电商企业更好地了解市场、了解消费者、了解产品、了解销售渠道等各种信息&#xff0c;从而制定更为科学有效的运营策略&#xff0c;提高销售效益。 数据方面用户可以直接选择使用数据接口来获取&#…...

C++入门(1)

目录 1.C关键字2.命名空间(namespace)2.1是什么2.2为什么2.3怎么用 3.C输入&输出4.缺省函数概念分类 5.函数重载6.引用6.1概念6.2特性6.3使用场景6.4引用和指针的不同点 1.C关键字 C总共有63个关键字 这里入门不多说&#xff0c;有需要的自行去了解 2.命名空间(namespac…...

redis-6.2.7 集群安装3主3从

因为资源有限准备了3 台 服务器&#xff0c;先查看防火墙的端口是否开放&#xff0c;如果没有开放先开放端口我使用的 6379 和 6380 这两个端口 所以将这两个端口放开。去redis 官网下载redis 安装包。下载地址 &#xff1a; redis 安装包下载 3. 安装redis 上传上去之后 3 台…...

【动态库】Ubuntu 添加动态库的搜索路径

在运行程序时&#xff0c;经常遇到下面这种动态库加载失败的情况&#xff0c;这时往往是系统在动态库的搜索路径下没有找到对应的库文件导致的。 目录 一、使用 LD_LIBRARY_PATH 二、修改 /etc/ld.so.conf 一、使用 LD_LIBRARY_PATH 环境变量 LD_LIBRARY_PATH是动态库的搜索…...

95740-26-4|用于体内DNA合成的探针F-ara-EdU

产品简介&#xff1a;(2S)-2-Deoxy-2-fluoro-5-ethynyluridine&#xff0c;一种用于体内DNA合成的探针&#xff0c;其毒性比EdU和BrdU都小。当需要延长细胞存活时间和不受干扰的细胞周期进展时&#xff0c;非常适合进行代谢DNA标记。 CAS号&#xff1a;95740-26-4 分子式&…...

Ajax使用流程

Ajax在不刷新页面的情况下&#xff0c;进行页面局部更新。 Ajax使用流程&#xff1a; 创建XmlHttpReqeust对象发送Ajax请求处理服务器响应 1. 创建XmlHttpReqeust对象 XmlHttpReqeust对象是Ajax的核心&#xff0c;使用该对象发起请求&#xff0c;接收响应 不同的浏览器创建…...

1808_ChibiOS基本的架构介绍

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 简单看了一下ChibiOS的架构介绍&#xff0c;感觉这种OS以及组件非常适合快速构建一个应用。这里做一个简单的资料整理。。 1. 不同于其他的OS&#…...

曦力音视频转换工具Xilisoft Video Converter Ultimate mac中文版

Xilisoft Video Converter Ultimate mac是一款功能强大的视频转换软件&#xff0c;它可以将几乎所有流行的视频格式转换为其他格式&#xff0c;包括AVI、MPEG、WMV、DivX、MP4、H.264/AVC、AVCHD、MKV、RM、MOV、XviD、3GP等。此外&#xff0c;它还支持将视频转换为音频格式&am…...

Spring MVC 五:DispatcherServlet初始化之 mvc:annotation-driven

通过xml方式初始化DispatcherServlet时&#xff0c;xml文件中可以配置&#xff1a; <mvc:annotation-driven />或&#xff1a; <mvc:annotation-driven ><!--设置响应输出字符集--><mvc:message-converters><bean class"org.springframework.…...

uniapp EventChannel 页面跳转参数事件传递navigateBack,navigateTo 成功后通知事件区别

问题&#xff1a;navigateBack&#xff08;&#xff09;emit事件在onload()监听不到 从A页面跳转到B页面&#xff0c;在B点击产生数据后&#xff0c;跳转回到A&#xff0c;并告诉A点击的数据是什么&#xff0c;使用&#xff1a; navigateBack&#xff08;&#xff09;。 &…...

【C++ Primer Plus学习记录】指针——使用delete释放内存

当需要内存时&#xff0c;可以使用new来请求&#xff0c;使用完内存后&#xff0c;可以使用delete将其归还给内存池。 归还或释放&#xff08;free&#xff09;的内存可供程序的其他部分使用。 使用delete时&#xff0c;后面要加上指向内存块的指针&#xff08;这些内存块最初…...

2023 NOIP A层联测9 - 风信子 题解

思路 我们可以考虑设 f l 0 , r 0 , l 1 , r 1 f_{l_0,r_0,l_1,r_1} fl0​,r0​,l1​,r1​​ 表示最大的 a l − a r a_l-a_r al​−ar​&#xff0c;其中 l ∈ [ l 0 , r 0 ] l\in [l_0,r_0] l∈[l0​,r0​]&#xff0c; r ∈ [ l 1 , r 1 ] r\in [l_1, r_1] r∈[l1​,r1​…...