docker自建GitLab仓库

news2024/12/23 17:23:54

摘要

GitLab 是一个功能强大的开源代码托管平台,它不仅提供了代码存储和版本控制的核心功能,还集成了项目管理、CI/CD 流水线、代码审查等企业级特性。本文将指导你如何在自己的服务器上搭建 GitLab 社区版,创建一个完全属于自己的开源仓库,享受私有化部署带来的灵活性与安全性。

一、拉取gitlab镜像

1.输入命令docker pull gitlab/gitlab-ce

2.输入docker images 查看镜像拉取成功

二、启动容器

1.输入启动容器命令

docker run -itd --name gitlab -p 443:443 -p 80:80 -p 222:22 --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

命令解释:

  • -i :以交互模式运行容器,通常与 -t 同时使用命令解释
  • -t :为容器重新分配一个伪输入终端,通常与 -i 同时使用
  • -d :后台运行容器,并返回容器ID
  • -p:80:80 将容器内80端口映射至宿主机80端口,这是访问gitlab的端口
  • -p:222:22 将容器内22端口映射至宿主机222端口,这是访问ssh的端口
  • -v :/usr/local/gitlab-test/etc:/etc/gitlab 将容器/etc/gitlab目录挂载到宿主机/usr/local/gitlab-test/etc目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
  • –restart always :容器自启动
  • –privileged=true :让容器获取宿主机root权限
  • –name gitlab :设置容器名称为gitlab
  • gitlab/gitlab-ce :镜像的名称,这里也可以写镜像ID

docker run -v挂载目录时,若本地没有该目录挂载时会自动创建。

[root@hadoop102 ~]# ls /home/
gitlab

[root@hadoop102 ~]# ls /home/gitlab/
config  data  logs

2.修改gitlab.rb配置文件

vim /home/gitlab/config/gitlab.rb

因为我这里已经修改完了,就直接展示修改完之后的文件内容

只需要增加这三行内容,其余不用动

external_url 'http://192.168.59.130'    //配置http协议所使用的gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
gitlab_rails['gitlab_ssh_host'] = '192.168.59.130'    //配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_shell_ssh_port'] = 222    //此端口是docker run时22端口映射的222端口

3.重启gitlab容器

docker restart gitlab

访问报错

报错原因:内存不足会提示502报错。(服务器内存至少4G,不够会出现502错误。)

经检查发现虚拟机内存仅为1G

扩展虚拟机内存为4G,并重启虚机

成功访问

三、登录仓库

1.宿主机中搜索initial_root_password文件

find / -name initial_root_password

Password:gitlab的初始密码

2.修改密码

  • 首先输入命令 docker exec -it gitlab /bin/bash 进入gitlab容器

  • 输入命令 gitlab-rails console -e production 启动Ruby on Rails控制台

 

  • 控制台加载完毕,搜索用户,有两种方法
    • user = User.where(id: 1).first
    • user = User.find_by(email: 'admin@example.com')

因为我这里只有一个用户,所以采取第一种方式

  • 更改密码
user.password = '新密码'

user.password_confirmation = '新密码'

  • 保存
user.save

  • 退出控制台,退出容器

  • 登录

四、配置中文界面

保存之后刷新页面变为中文界面

结语

搭建并维护自己的 GitLab 仓库是一项提升团队协作效率和代码管理能力的重要举措。随着你对 GitLab 功能的深入探索,你会发现更多提高开发效率和代码质量的方法。现在,你已经拥有了一个强大的开源代码托管平台,开始你的开源项目之旅吧!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

##10 卷积神经网络(CNN):深度学习的视觉之眼

文章目录 前言1. CNN的诞生与发展2. CNN的核心概念3. 在PyTorch中构建CNN4. CNN的训练过程5. 应用:使用CNN进行图像分类5. 应用:使用CNN进行时序数据预测代码实例7. 总结与展望前言 在深度学习的领域中,卷积神经网络(CNN)已经成为视觉识别任务的核心技术。自从AlexNet在2…

引入RabbitMQ

前置条件 docker 安装 mq docker run \-e RABBITMQ_DEFAULT_USERdudu \-e RABBITMQ_DEFAULT_PASS123456 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network hmall \-d \rabbitmq:3.8-management可能会出现:docker: Er…

FPGA+炬力ARM实现VR视频播放器方案

FPGA炬力ARM方案,单个视频源信号,同时驱动两个LCD屏显示,实现3D 沉浸式播放 客户应用:VR视频播放器 主要功能: 1.支持多种格式视频文件播放 2.支持2D/3D 效果实时切换播放 3.支持TF卡/U盘文件播放 4.支持定制化配置…

【机器学习300问】79、Mini-Batch梯度下降法的原理是什么?

Mini-Batch梯度下降法是一种将训练数据集分成小批次进行学习的优化方法,通过这种方式,可以有效地解决内存限制问题并加速学习过程。 一、为什么要使用Mini-Batch? 在机器学习尤其是深度学习中,我们常常面临海量数据处理的问题。如…

内网穿透速度慢

内网穿透速度慢原因及优化策略 在计算机网络应用中,内网穿透是一个常见的需求,它允许外部网络访问位于内部网络(如企业局域网或家庭网络)中的设备或服务。然而,有时用户在进行内网穿透时会遇到速度慢的问题&#xff0…

10大排序方法,其中这里只介绍前7种(第4种C语言,其它C++语言)

排序方法有十种,分别是:一、冒泡排序;二、选择排序;三、插入排序;四、希尔排序;五、归并排序;六、快速排序;七、堆排序;八、计数排序;九、桶排序;…

1011: 二叉排序树的实现和查找

解法: 二叉排序树(Binary Search Tree,简称BST)也被称为二叉搜索树或二叉查找树,是一种重要的二叉树结构,它具有以下性质: 左子树上所有节点的值都小于根节点的值;右子树上所有节点的…

2024粤港澳青少年信息学创新大赛C++知识点汇总和真题训练

2024粤港澳青少年信息学创新大赛C知识点汇总和真题训练 知识汇总 真题训练 程序设计语言C是一种解释性语言。 A.正确 B.错误 Python是一种编译型语言。 A.正确 B.错误 误 RAM(随机存取存储器)是一种易失性存储设备。 A.正确 B.错误 Java…

单节锂电池充电芯片H4054无需外接检测电阻500mA电流7V输入

锂电池充电芯片的主要功能如下: 充电管理功能:充电芯片能够对锂电池进行智能化管理,根据电池的状态和需求,调节充电电流和电压,以实现快速充电、恒流充电、恒压充电等不同的充电模式。通过合理控制充电过程&#xff0…

Selenium定位方法汇总及举例

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

头歌实践教学平台:CG1-v2.0-直线绘制

第1关&#xff1a;直线光栅化-DDA画线算法 一.任务描述 1.本关任务 (1)根据直线DDA算法补全line函数&#xff0c;其中直线斜率0<k<1&#xff1b; (2)当直线方程恰好经过P(x,y)和T(x,y1)的中点M时&#xff0c;统一选取直线上方的T点为显示的像素点。 2.输入 (1)直线两…

接口用例设计方法

一、单接口测试 例如&#xff1a;登录、获取天气等等 1、正向测试&#xff08;也就是正确测试&#xff0c;比如&#xff1a;登录成功&#xff09; 1.必填参数组合 P0 (正确用户名和正确的密码) 2.必填非必填组合 1)全部参数组合 P1 2)其他参数组合 P2/P3 2、…

16【PS Aseprite 作图】图像从Aseprite传输到PS

【内容背景】Aseprite很适合做像素图&#xff0c;有一个“完美像素”的选项&#xff0c;就不用在PS里面慢慢修线&#xff0c;能够省事很多 【具体操作】 勾选完美像素 Aseprite里面的“完美像素”能够减少修线的步骤&#xff0c;在“作图”的时候一定要注意勾选 导出 选择…

Java17 --- SpringCloud之Zipkin链路追踪

目录 一、下载zipkin及运行 二、在父工程中引入pom依赖 三、在子工程8001引入相关pom依赖 3.1、修改yml配置文件 3.2、测试代码 四、在子工程80引入相关pom依赖 4.1、修改yml配置文件 4.2、测试代码 五、测试结果 一、下载zipkin及运行 运行控制台访问地址&#xff1…

LLM大语言模型(十四):LangChain中Tool的不同定义方式,对prompt的影响

背景 ChatGLM3-6B的函数调用功能&#xff0c;和LangChain的Tool调用&#xff0c;在prompt上并没有对齐。 参考&#xff1a;LLM大语言模型&#xff08;十二&#xff09;&#xff1a;关于ChatGLM3-6B不兼容Langchain 的Function Call_error: valueerror: caught exception: unk…

AI编码工具-通义灵码功能实测(二)

AI编码工具-通义灵码功能实测&#xff08;二&#xff09; 通义灵码智能问答 在上一篇文章中&#xff1a;https://blog.csdn.net/csdn565973850/article/details/138563670?spm1001.2014.3001.5501 讲述了通义灵码的7大应用场景&#xff0c;这里在使用过程中遇到了一些问题&…

如何向Linux内核提交开源补丁?

2021年&#xff0c;我曾经在openEuler社区上看到一项改进Linux内核工具的需求&#xff0c;因此参与过Linux内核社区的开源贡献。贡献开源社区的流程都可以在内核社区文档中找到&#xff0c;但是&#xff0c;单独学习需要一个较长的过程&#xff0c;新手难以入门&#xff0c;因此…

springboot+vue+mybatis警情高发智能灯箱+PPT+论文+讲解+售后

时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;警情高发智能灯箱当然不能排除在外。警情高发智能灯箱是在实际应用和软件工程的开发原理之上&#xff0c;运用微信开发者、java语言以及SpringBo…

超标量处理器设计:寄存器重命名(1)介绍

★继续学习体系结构的知识。 指令之间的相关性 1.数据相关性 具体分为三类&#xff1a; (1) Output Dependence (WAW)&#xff1a;当两条指令尝试向同一个寄存器写入数据时发生。后面的写操作必须等待前面的写操作完成&#xff0c;因为它们争夺同一资源。 (2) Anti-Depende…

大厂面试sql手撕题目总结

文章目录 1. 常用函数1. 日期函数 2. 行转列&#xff08;转置&#xff09;1. 行转列 连续N天登录1. 查询出连续三天登录的人员姓名 N日留存率1. 求用户当天&#xff0c;次日&#xff0c;七日留存率 分组内topN1. 求出每个部门工资最高的前三名员工&#xff0c;并计算这些员工的…