Docker部署GitLab服务器

一、GitLab介绍

1.1 GitLab简介

  1. GitLab 是一款基于 Git 的开源代码托管平台,集成了版本控制、代码审查、问题跟踪、持续集成与持续交付(CI/CD)等多种功能,旨在为团队提供一站式的项目管理解决方案。
  2. 借助 GitLab,开发团队可以高效协作,轻松管理代码版本,并通过内置的 DevOps 工具加速开发、测试和部署过程。
  3. GitLab 的独特优势在于其完整的容器化部署方案,官方支持与 Kubernetes 等容器编排平台的无缝集成,使平台更加易于管理、扩展,并支持现代化云原生架构。

1.2 GitLab特点

  1. 全面的功能支持
    • GitLab 不仅是一个代码仓库管理工具,还提供自动化构建、测试、部署等强大的 DevOps 功能,是现代化软件开发和团队协作的理想选择。
  2. Web 管理界面
    • 基于 Web 的操作界面,方便用户在浏览器中进行仓库管理、代码审查和 CI/CD 配置。

主要功能特点:

  • 代码仓库管理
    • 支持分支管理、合并请求(Merge Requests)和代码审查等功能,为团队提供高效的协作环境。
  • 代码托管
    • 无论是私有服务器还是公共云平台,GitLab 都支持全面的代码托管方案,满足不同规模团队的需求。
  • 内置 CI/CD 工具
    • GitLab 提供持续集成和持续交付工具,支持自动化构建、测试和部署,并包含强大的可视化管道编辑器和测试报告功能。
  • 安全管理
    • 支持多级用户权限、角色管理、双因素身份验证(2FA)、代码扫描和漏洞检测等功能,全面保障代码安全。
  • DevOps 平台
    • GitLab 提供完整的 DevOps 生命周期管理,包括计划、创建、验证、发布、配置和监控,助力团队高效协作,加速软件交付。

二、本次实践介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.9。

hostnameIP地址操作系统版本Docker版本
docker192.168.1.50centos 7.926.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

  1. 打开 GitHub Docker Compose 官方发布页面:
    • 地址:https://github.com/docker/compose/releases
  2. 找到需要的版本,下载适合你的系统架构的二进制文件(如 Linux 的 docker-compose-linux-x86_64)。

在这里插入图片描述

提示: 如果最新版没有提供二进制文件,可以选择较低版本,直到找到对应的文件。


2. 上传到 Linux

  1. 将下载的文件通过工具(如 scpWinSCP)上传到 /usr/local/bin 目录:

    scp docker-compose-linux-x86_64 root@<your-server-ip>:/usr/local/bin/
    
  2. 上传后,将文件重命名为 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. 验证安装

  1. 查看 Docker Compose 版本,验证是否安装成功:

    docker-compose version
    
  2. 如果提示权限错误(如 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 创建目录

  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 文件

  1. 创建或编辑 Docker Compose 配置文件: 使用文本编辑器创建并编辑 docker-compose.yml 文件:

    vim /data/gitlab/docker-compose.yml
    
  2. 完整的 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

  1. 启动容器: 使用 Docker Compose 命令启动 GitLab 容器:

    docker compose up -d
    
    • up:启动容器。
    • -d:以守护进程模式运行容器(后台运行)。
    • 在这里插入图片描述
  2. 运行结果

    • 执行后,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 登录页

  1. 访问 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 和随机密码。初始密码可以通过以下命令查看:

  1. 查看初始密码文件
    在容器中查看初始密码:

    docker exec -it gitlab cat /etc/gitlab/initial_root_password
    

    输出示例:

    Password: KfK95J1yFzESkYkNjEkj
    

    说明

    • 密码文件位于 /etc/gitlab/initial_root_password
    • 该密码仅在首次启动时有效。
  2. 删除初始密码文件(可选)
    为了安全起见,可以在记下初始密码后删除该文件:

    docker exec -it gitlab rm /etc/gitlab/initial_root_password
    

6.3 重置登录密码(如有需要)

如果遗忘了超级管理员密码,可以通过以下步骤进行重置:

  1. 进入 GitLab 容器内部
    使用 Docker 命令进入容器:

    docker exec -it gitlab /bin/bash
    
    • docker exec:在运行中的容器内执行命令。
    • gitlab:GitLab 容器的名称。

    输出示例:

    [root@docker gitlab]# docker exec -it gitlab /bin/bash
    root@192:/#
    
  2. 进入 Rails 控制台
    启动 GitLab 的 Rails 控制台:

    gitlab-rails console -e production
    
    • -e production:以生产环境模式启动控制台。
  3. 查询超级管理员用户
    查询超级管理员用户信息(默认用户 ID 为 1):

    user = User.where(id: 1).first
    

    示例图片:
    在这里插入图片描述

  4. 修改密码
    设置新的密码(以 admin36987 为例):

    user.password = 'admin36987'
    
  5. 保存修改并退出
    保存新密码并退出控制台:

    user.save!  # 保存更改
    exit        # 退出控制台
    

    示例图片:
    在这里插入图片描述


6.4 访问 GitLab 首页

  1. 使用初始密码或修改后的账号密码登录 GitLab:

    • 用户名root
    • 密码:初始密码或修改后的密码(如 admin36987)。

    修改密码:
    在这里插入图片描述

  2. 首次登录时提示设置新密码
    如果使用初始密码登录,GitLab 会提示您设置新密码。


6.5 设置中文语言

  1. 进入 Preferences 页面
    登录后,点击右上角头像,进入 Preferences 页面:

    Profile > Preferences
    
  2. 修改语言设置
    Preferences 页面找到 Localization 区域,将 Language 选项修改为 简体中文

    示例图片:

    • 修改前:
      在这里插入图片描述

    • 修改后:
      在这里插入图片描述

  3. 保存设置
    点击保存按钮,刷新界面后语言会立即切换为简体中文。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

芯片Tapeout power signoff 之IR Drop Redhawk Ploc文件格式及其意义

数字IC后端工程师在芯片流程最后阶段都会使用redhawk或voltus进行设计的IR Drop功耗signoff分析。必须确保静态&#xff0c;动态ir drop都符合signoff标准。 在做redhawk ir drop分析前&#xff0c;我们需要提供一个redhawk ploc供电点坐标。 数字IC设计后端实现前期预防IR D…

HarmonyOS NEXT 实战之元服务:静态案例效果---查看国内航班服务

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; Index代码 import { authen…

python+requests接口自动化测试框架实例详解

前段时间由于公司测试方向的转型&#xff0c;由原来的web页面功能测试转变成接口测试&#xff0c;之前大多都是手工进行&#xff0c;利用postman和jmeter进行的接口测试&#xff0c;后来&#xff0c;组内有人讲原先web自动化的测试框架移驾成接口的自动化框架&#xff0c;使用的…

前端:改变鼠标点击物体的颜色

需求&#xff1a; 需要改变图片中某一物体的颜色&#xff0c;该物体是纯色&#xff1b; 鼠标点击哪个物体&#xff0c;哪个物体的颜色变为指定的颜色&#xff0c;利用canvas实现。 演示案例 代码Demo <!DOCTYPE html> <html lang"en"><head>&l…

聊一聊 C#前台线程 如何阻塞程序退出

一&#xff1a;背景 1. 讲故事 这篇文章起源于我的 C#内功修炼训练营里的一位朋友提的问题&#xff1a;后台线程的内部是如何运转的 ? &#xff0c;犹记得C# Via CLR这本书中 Jeffery 就聊到了他曾经给别人解决一个程序无法退出的bug&#xff0c;最后发现是有一个 Backgrond…

Nmap基础入门及常用命令汇总

Nmap基础入门 免责声明&#xff1a;本文单纯分享技术&#xff0c;请大家使用过程中遵守法律法规~ 介绍及安装 nmap是网络扫描和主机检测的工具。作为一个渗透测试人员&#xff0c;必不可少的就是获取信息。那么nmap就是我们从互联网上获取信息的途径&#xff0c;我们可以扫描互…

Excel中一次查询返回多列

使用Excel或wps的时候&#xff0c;有时候需要一次查询返回多列内容&#xff0c;这种情况可以选择多次vlookup或者多次xlookup&#xff0c;但是这种做法费时费力不说&#xff0c;效率还有些低下&#xff0c;特别是要查询的列数过多时。我放了3种查询方法&#xff0c;效果图&…

NodeMCU驱动28BYJ-48型步进电机(Arduino)

NodeMCU NodeMCU开发板 此NodeMCU是在乐鑫公司&#xff08;Espressif Systems&#xff09;生产的ESP-12F模组的基础上封装好的具备WiFi功能的开源IoT开发板。本次选用安信可公司&#xff08;Ai-Thinker&#xff09;生产的CP2102版本的开发板。 28BYJ-48型步进电机 28BYJ-48型…

qt QZipReader详解

1、概述 QZipReader 是 Qt 中用于从 .zip 文件中读取和提取文件内容的类。它提供了便捷的方法来访问压缩包中的文件和目录&#xff0c;并允许你解压缩单个或多个文件。通过 QZipReader&#xff0c;你可以以编程方式读取 .zip 文件中的内容&#xff0c;并提取它们到目标目录中。…

html + css 淘宝网实战

之前有小伙伴说&#xff0c;淘宝那么牛逼你会写代码&#xff0c;能帮我做一个一样的淘宝网站吗&#xff0c;好呀&#xff0c;看我接下来如何给你做一个淘宝首页。hahh,开个玩笑。。。学习而已。 在进行html css编写之前 先了解下网页的组成和网页元素的尺寸吧 1.网页的组成 …

Ollama+OpenWebUI+llama3本地部署

引言 llama3在4月19日刚刚发布&#xff0c;官方的对比结果中在开源模型中堪称世界第一&#xff0c;整好周六日有时间&#xff0c;在魔搭社区上测试一下 2 安装Ollama 2.1 下载Ollama 登录Ollama官网下载Ollama安装包 GitHub&#xff1a;https://github.com/ollama/ollama?t…

【vue2父组件调用子组件方法之slot的使用】

父组件调用子组件方法之slot的使用 具体功能需求&#xff1a; 一个页面&#xff0c;点击按钮&#xff0c;打开一个弹窗。弹窗有自定义表单和公共表单&#xff0c;提交的时候要获取两个表单的数据以及复显表单数据 为什么使用插槽了&#xff0c;因为我需要在弹窗中复用公共表单…

【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下

【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下 一、问题背景 应用开发中&#xff0c;我们经常会遇到一些文件原先是放在资源文件夹 rawfile下&#xff0c;但是逻辑处理时&#xff0c;需要转移到本地沙箱才能操作。这种情况下&#xff0c;就需要将将…

ubuntu 网络管理--NetworkManager

ubuntu 网络管理--NetworkManager 1 介绍2 NetworkManager 命令2 nmcli 命令显示可用的wifi AP连接wifi检查网络连接 ?? 如何删除删除网络连接查看设备状态添加一个新的以太网连接设置静态 IP 地址启用并测试连接添加新的wifi连接 3 其他命令参考 1 介绍 NetworkManager 是标…

Unity功能模块一对话系统(1)前置准备

也许你也曾被游戏中的对话系统深深吸引&#xff0c;那些精心设计的对白、鲜活的角色配音、甚至是简单的文字对话&#xff0c;往往能让玩家产生强烈的代入感和情感共鸣。如果你正在开发一款游戏&#xff0c;或者计划为你的项目加入一个引人入胜的对话系统&#xff0c;那么 Unity…

【自留】Unity VR入门

帮老师写的&#xff0c;自留&#xff0c;不保证是很好的教程。 1.PICO开发指南&#xff08;官方&#xff09; 在该页面&#xff0c;能找到大部分能实现的功能&#xff0c;以及实现方式。非常推荐&#xff01;PICO Unity Integration SDK | PICO 开发者平台 2.如何快速入门&…

以太网帧结构

以太网帧结构 目前&#xff0c;我们局域网当中应用最广的技术或者协议啊&#xff0c;就是以太网。我们首先来看一下以太网的真结构。这块内容这里边再系统的来给大家去展开说一下&#xff0c;以太网真格式就如下面这个图。所示前面有八个字节&#xff0c;是用于时钟同步的&…

【C语言练习(17)—输出杨辉三角形】

C语言练习&#xff08;17&#xff09; 文章目录 C语言练习&#xff08;17&#xff09;前言题目题目解析整体代码 前言 杨辉三角形的输出可以分三步&#xff0c;第一步构建一个三角形、第二步根据规律将三角形内容填写、第三步将三角形以等腰的形式输出 题目 请输出一个十行的…

Java圣诞树

目录 写在前面 技术需求 程序设计 代码分析 一、代码结构与主要功能概述 二、代码功能分解与分析 1. 类与常量定义 2. 绘制树的主逻辑 3. 彩色球的绘制 4. 动态效果的实现 5. 窗口初始化 三、关键特性与优点 四、总结 写在后面 写在前面 Java语言绘制精美圣诞树…

YashanDB 23.2 YAC -单库多实例架构多活共享集群安装部署指南

一、概述 1.1 文档目标 ​ 本说明旨在指导技术人员在 CentOS 7 x86_64 操作系统上完成崖山数据库企业版 23.2 的共享集群安装与部署。通过系统架构、集群拓扑及部署需求的精确描述&#xff0c;帮助读者在开始安装前对崖山数据库的架构形成清晰认识。本文以高效、稳定、安全为…