Docker部署GitLab服务器
一、GitLab介绍
1.1 GitLab简介
- GitLab 是一款基于 Git 的开源代码托管平台,集成了版本控制、代码审查、问题跟踪、持续集成与持续交付(CI/CD)等多种功能,旨在为团队提供一站式的项目管理解决方案。
- 借助 GitLab,开发团队可以高效协作,轻松管理代码版本,并通过内置的 DevOps 工具加速开发、测试和部署过程。
- GitLab 的独特优势在于其完整的容器化部署方案,官方支持与 Kubernetes 等容器编排平台的无缝集成,使平台更加易于管理、扩展,并支持现代化云原生架构。
1.2 GitLab特点
- 全面的功能支持:
- GitLab 不仅是一个代码仓库管理工具,还提供自动化构建、测试、部署等强大的 DevOps 功能,是现代化软件开发和团队协作的理想选择。
- Web 管理界面:
- 基于 Web 的操作界面,方便用户在浏览器中进行仓库管理、代码审查和 CI/CD 配置。
主要功能特点:
- 代码仓库管理:
- 支持分支管理、合并请求(Merge Requests)和代码审查等功能,为团队提供高效的协作环境。
- 代码托管:
- 无论是私有服务器还是公共云平台,GitLab 都支持全面的代码托管方案,满足不同规模团队的需求。
- 内置 CI/CD 工具:
- GitLab 提供持续集成和持续交付工具,支持自动化构建、测试和部署,并包含强大的可视化管道编辑器和测试报告功能。
- 安全管理:
- 支持多级用户权限、角色管理、双因素身份验证(2FA)、代码扫描和漏洞检测等功能,全面保障代码安全。
- DevOps 平台:
- GitLab 提供完整的 DevOps 生命周期管理,包括计划、创建、验证、发布、配置和监控,助力团队高效协作,加速软件交付。
二、本次实践介绍
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为centos7.9。
| hostname | IP地址 | 操作系统版本 | Docker版本 |
|---|---|---|---|
| docker | 192.168.1.50 | centos 7.9 | 26.1.4 |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎使用;
2.在Docker环境下成功部署GitLab服务器。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
[root@localhost /]# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)Active: active (running) since 六 2024-12-21 23:07:14 CST; 3h 29min agoDocs: https://docs.docker.comMain PID: 34141 (dockerd)Tasks: 67Memory: 151.2MCGroup: /system.slice/docker.service
docker安装教程:https://note.wym123.cn/docker/install/
3.2 检查Docker版本
检查Docker版本
[root@localhost /]# docker version
Client: Docker Engine - CommunityVersion: 26.1.4API version: 1.45Go version: go1.21.11Git commit: 5650f9bBuilt: Wed Jun 5 11:32:04 2024OS/Arch: linux/amd64Context: defaultServer: Docker Engine - CommunityEngine:Version: 26.1.4API version: 1.45 (minimum version 1.24)Go version: go1.21.11Git commit: de5c9cfBuilt: Wed Jun 5 11:31:02 2024OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.6.33GitCommit: d2d58213f83a351ca8f528a95fbd145f5654e957runc:Version: 1.1.12GitCommit: v1.1.12-0-g51d5e94docker-init:Version: 0.19.0GitCommit: de40ad0
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
[root@localhost /]# docker compose version
Docker Compose version v2.27.1
三、Docker Compse版本升级(可选)
1. 从 GitHub 下载 Docker Compose
- 打开 GitHub Docker Compose 官方发布页面:
- 地址:https://github.com/docker/compose/releases
- 找到需要的版本,下载适合你的系统架构的二进制文件(如 Linux 的
docker-compose-linux-x86_64)。

提示: 如果最新版没有提供二进制文件,可以选择较低版本,直到找到对应的文件。
2. 上传到 Linux
-
将下载的文件通过工具(如
scp或WinSCP)上传到/usr/local/bin目录:scp docker-compose-linux-x86_64 root@<your-server-ip>:/usr/local/bin/ -
上传后,将文件重命名为
docker-compose:mv /usr/local/bin/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
3. 添加执行权限
为二进制文件添加可执行权限:
chmod +x /usr/local/bin/docker-compose
4. 验证安装
-
查看 Docker Compose 版本,验证是否安装成功:
docker-compose version -
如果提示权限错误(如
Permission denied),需要重新添加可执行权限:chmod +x /usr/local/bin/docker-compose
四、下载GitLab镜像
从docker hub下载GitLab镜像
[root@docker gitlab]# docker pull gitlab/gitlab-ce:latest
latest: Pulling from gitlab/gitlab-ce
7b1a6ab2e44d: Already exists
6c37b8f20a77: Pull complete
f50912690f18: Pull complete
bb6bfd78fa06: Pull complete
2c03ae575fcd: Pull complete
839c111a7d43: Pull complete
4989fee924bc: Pull complete
666a7fb30a46: Pull complete
Digest: sha256:5a0b03f09ab2f2634ecc6bfeb41521d19329cf4c9bbf330227117c048e7b5163
Status: Downloaded newer image for gitlab/gitlab-ce:latest
docker.io/gitlab/gitlab-ce:latest
五、部署GitLab服务器
5.1 创建目录
-
创建 GitLab 数据目录
为了确保容器内的 GitLab 数据持久化,需要在宿主机上创建专用目录。执行以下命令:mkdir -p /data/gitlab/{data,logs,config} && cd /data/gitlab//data/gitlab/data:存储 GitLab 的数据(如仓库和数据库)。/data/gitlab/logs:存储 GitLab 的日志文件。/data/gitlab/config:存储 GitLab 的配置文件。&& cd /data/gitlab/:进入创建的主目录。
5.2 编辑 docker-compose.yml 文件
-
创建或编辑 Docker Compose 配置文件: 使用文本编辑器创建并编辑
docker-compose.yml文件:vim /data/gitlab/docker-compose.yml -
完整的
docker-compose.yml示例:version: "3" services:gitlab:container_name: gitlab # 容器名称image: gitlab/gitlab-ce:latest # 使用 GitLab 社区版最新镜像hostname: '192.168.0.50' # 配置主机名(本地或虚拟机 IP)restart: always # 容器意外停止时自动重启ports:- 8088:80 # 映射 HTTP 端口- 8443:443 # 映射 HTTPS 端口- 2222:22/tcp # 映射 SSH 端口volumes:- /etc/localtime:/etc/localtime # 同步宿主机时间- /data/gitlab/data:/var/opt/gitlab # 数据存储路径- /data/gitlab/config:/etc/gitlab # 配置文件路径- /data/gitlab/logs:/var/log/gitlab # 日志文件路径environment:GITLAB_OMNIBUS_CONFIG: |external_url 'http://192.168.0.50:80' # 外部访问 URLgitlab_rails['gitlab_shell_ssh_port'] = 2222 # 配置 SSH 端口deploy:resources:limits: # 设置资源限制memory: 4G # 最大内存使用reservations: # 保留资源memory: 1G # 最低内存保留
注意事项:
external_url中指定的端口号不仅是访问路径的一部分,它还会影响 GitLab 应用本身的监听端口。例如,如果设置为http://192.168.0.50:8088,GitLab 会在 8088 端口上监听并提供服务(是对于gitlab内部而言的),而不是默认的 80(HTTP)端口, 我们的访问路径是ip+映射后的端口号,不是external_url里面提供的。
5.3 部署 GitLab
-
启动容器: 使用 Docker Compose 命令启动 GitLab 容器:
docker compose up -dup:启动容器。-d:以守护进程模式运行容器(后台运行)。
-
运行结果:
-
执行后,Docker Compose 将下载
gitlab/gitlab-ce:latest镜像并启动容器。 -
可以通过以下命令查看运行状态:
docker ps -
输出示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 123456789abc gitlab/gitlab-ce:latest "/assets/wrapper" 2 minutes ago Up 1 minute 0.0.0.0:80->80/tcp, 0.0.0.0:8443->443/tcp gitlab
-
六、访问gitlab仓库
6.1 进入 GitLab 登录页
-
访问 GitLab Web 界面
在浏览器中输入以下地址访问 GitLab 登录页:http://192.168.0.50:80-
注意:将
192.168.0.50替换为您部署 GitLab 的服务器 IP 地址。 -
如果配置了 HTTPS,则访问地址为:
https://192.168.0.50:8443

-
6.2 获取初始密码
在 GitLab 容器的首次启动过程中,会生成默认的超级管理员账号 root 和随机密码。初始密码可以通过以下命令查看:
-
查看初始密码文件
在容器中查看初始密码:docker exec -it gitlab cat /etc/gitlab/initial_root_password输出示例:
Password: KfK95J1yFzESkYkNjEkj说明:
- 密码文件位于
/etc/gitlab/initial_root_password。 - 该密码仅在首次启动时有效。
- 密码文件位于
-
删除初始密码文件(可选)
为了安全起见,可以在记下初始密码后删除该文件:docker exec -it gitlab rm /etc/gitlab/initial_root_password
6.3 重置登录密码(如有需要)
如果遗忘了超级管理员密码,可以通过以下步骤进行重置:
-
进入 GitLab 容器内部
使用 Docker 命令进入容器:docker exec -it gitlab /bin/bashdocker exec:在运行中的容器内执行命令。gitlab:GitLab 容器的名称。
输出示例:
[root@docker gitlab]# docker exec -it gitlab /bin/bash root@192:/# -
进入 Rails 控制台
启动 GitLab 的 Rails 控制台:gitlab-rails console -e production-e production:以生产环境模式启动控制台。
-
查询超级管理员用户
查询超级管理员用户信息(默认用户 ID 为1):user = User.where(id: 1).first示例图片:

-
修改密码
设置新的密码(以admin36987为例):user.password = 'admin36987' -
保存修改并退出
保存新密码并退出控制台:user.save! # 保存更改 exit # 退出控制台示例图片:

6.4 访问 GitLab 首页
-
使用初始密码或修改后的账号密码登录 GitLab:
- 用户名:
root - 密码:初始密码或修改后的密码(如
admin36987)。
修改密码:

- 用户名:
-
首次登录时提示设置新密码
如果使用初始密码登录,GitLab 会提示您设置新密码。
6.5 设置中文语言
-
进入 Preferences 页面
登录后,点击右上角头像,进入Preferences页面:Profile > Preferences -
修改语言设置
在Preferences页面找到Localization区域,将Language选项修改为简体中文。示例图片:
-
修改前:

-
修改后:

-
-
保存设置
点击保存按钮,刷新界面后语言会立即切换为简体中文。
相关文章:
Docker部署GitLab服务器
一、GitLab介绍 1.1 GitLab简介 GitLab 是一款基于 Git 的开源代码托管平台,集成了版本控制、代码审查、问题跟踪、持续集成与持续交付(CI/CD)等多种功能,旨在为团队提供一站式的项目管理解决方案。借助 GitLab,开发…...
python版本的Selenium的下载及chrome环境搭建和简单使用
针对Python版本的Selenium下载及Chrome环境搭建和使用,以下将详细阐述具体步骤: 一、Python版本的Selenium下载 安装Python环境: 确保系统上已经安装了Python 3.8及以上版本。可以从[Python官方网站]下载并安装最新版本的Python,…...
重温设计模式--4、组合模式
文章目录 1 、组合模式(Composite Pattern)概述2. 组合模式的结构3. C 代码示例4. C示例代码25 .应用场景 1 、组合模式(Composite Pattern)概述 定义:组合模式是一种结构型设计模式,它允许你将对象组合成…...
5、mysql的读写分离
主从复制 主从复制的含义 主从复制:在一个mysql的集群当中,至少3台,即主1台,从2台。 当有数据写入时,主负责写入本库,然后把数据同步到从服务器。 一定是在主服务器写入数据,从服务器的写入…...
uniapp Native.js原生arr插件服务发送广播到uniapp页面中
前言 最近搞了个设备,需求是读取m1卡,厂家给了个安卓原生demo,接入arr插件如下,接入后发现还是少了一部分代码,设备服务调起后触发刷卡无法发送到uniapp里。 中间是一些踩坑记录,最后面是解决办法…...
如何在 Ubuntu 22.04 上安装 Elasticsearch
简介 在本教程中,你将学习如何在 Ubuntu 22.04 服务器上安装 Elasticsearch。此外,你还将学习如何使用 Elasticsearch REST API 索引和操作数据。 Elasticsearch 是一个基于 Apache Lucene Library 的免费分布式搜索和分析引擎。它是一个快速且可扩展的…...
单片机长耗时前后台任务优化
代码: void Task_10ms(void) {... }//改 void Task_2ms(void) {static uint8_t s_state 0switch(s_state){case 0:....s_state 1;break;case 1:....s_state 2;break;case 3:....s_state 1;break;default: //此段可以去除s_state 0;break; } } 参考链接 MCU长…...
Linux大数据方向shell
一、概述 shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核,还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。 二、shell入门 1.输出hello world touch helloworld.sh&…...
爬虫 APP 逆向 ---> shopee(虾皮) 电商
shopee 泰国站点:https://shopee.co.th/ shopee 网页访问时,直接弹出使用 app 登录查看,那就登录 shopee 泰国站点 app。 手机抓包:分类接口 接口:https://mall.shopee.co.th/api/v4/pages/get_category_tree 请求参…...
axios 常见的content-type、responseType有哪些?
一、Content Type Content Type ,也被称为MIME类型(Multipurpose Internet Mail Extensions),是一种用于标识数据格式的机制。在HTTP协议中,Content Type’通常通过请求或响应头部的’Content-Type’字段来指定。这个…...
从零开始C++游戏开发之第七篇:游戏状态机与回合管理
在游戏开发的道路上,状态管理是一个无法绕开的重要课题。尤其是在棋牌类游戏中,游戏的进行需要有条不紊地按照回合推进,同时管理多个游戏状态,如“等待玩家加入”、“游戏进行中”、“结算阶段”等。如何优雅且高效地实现这些逻辑…...
【全开源】Java多语言tiktok跨境商城TikTok内嵌商城送搭建教程
开发工具:IntelliJ IDEA 部署环境: Tomcat8.x Mysql5.6 JDK1.8 Maven3.x Redis ZooKeeper3.4。 本系统开发使用JAVA技术栈开发 使用uniapp技术栈 支持多端 H5AndroidIOS PC端使用:vueelementui 用户端使用:uniapp 管理端使用:…...
mac启ssh服务用于快速文件传输
x.1 在mac上启SSH服务 方法一:图形交互界面启ssh(推荐) 通过sharing - advanced - remote login来启动ssh;(中文版mac应该是 “系统设置 → 通用 → 共享”里打开“远程登录”来启动) 查看自己的用户名和…...
《探索 Apache Spark MLlib 与 Java 结合的卓越之道》
在当今大数据与人工智能蓬勃发展的时代,Apache Spark MLlib 作为强大的机器学习库,与广泛应用的 Java 语言相结合,为数据科学家和开发者们提供了丰富的可能性。那么,Apache Spark MLlib 与 Java 结合的最佳实践究竟是什么呢&#…...
使用 Python 创建多栏 Word 文档 – 详解
目录 引言 一、工具与安装 二、Python 在 Word 中创建简单的多栏布局 三、Python 在 Word 文档的栏间添加分隔线 四、Python 从Word文档的指定位置开启多栏设置 五、Python 为多栏 Word 文档的各栏添加页码 引言 在文档设计中,排版不仅决定了内容的呈现方式&…...
WebPack3项目升级webpack5的配置调试记录
文章目录 前言一、webpack3环境1.1、知识点记录1.1.1、配置解释1.1.2、webpack与sass版本对应关系1.1.3、CommonJS与ESModule1.1.4、node版本管理nvm1.1.5、sass-loader、sass与node-sass 1.2、其他1.2.1、.d.ts是什么文件1.2.2、react与types/react版本对应关系1.2.3、webpack…...
Mysql的MHA高可用及故障切换
Mysql的MHA高可用及故障切换 MHA主从复制的单点问题配置1. 主从复制2. MHA高可用安装MHA的组件配置无密码认证manager节点配置manager节点上测试启动连接 故障切换模拟恢复 MHA master high availability 建立在主从复制基础之上的故障切换的软件系统。 主从复制的单点问题 …...
【ES6复习笔记】箭头函数(5)
简介 本教程将介绍如何在 JavaScript 中使用箭头函数,包括箭头函数的基本语法、特点以及在实际开发中的应用。通过本教程,你将学会如何使用箭头函数来简化代码,提高代码的可读性和简洁性。 箭头函数的基本语法 箭头函数是 ES6 引入的一种新…...
单片机学习笔记——入门51单片机
一、单片机基础介绍 1.何为单片机 单片机,英文Micro Controller Unit,简称MCU 。内部集成了中央处理器CPU、随机存储器ROM、只读存储器RAM、定时器/计算器、中断系统和IO口等一系列电脑的常用硬件功能 单片机的任务是信息采集(依靠传感器&a…...
Docker Run使用方法及参数详细说明
Docker Run使用方法及参数详细说明 基本语法常用参数使用示例总结Docker Run是Docker中最基本的命令之一,用于创建并启动一个新的容器。通过Docker Run,用户可以基于指定的镜像创建一个容器实例,并且可以配置容器的各种参数,如网络设置、存储选项等。下面将详细介绍Docker …...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
