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.mzph.cn/pingmian/64904.shtml

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

相关文章

hadoop中hive本地模式安装mysql源不成功

目录 1.更改DNS配置 2.替换yun源 3.替换掉后&#xff0c;在执行 4.重新安装mysql源 hive本地模式安装mysql源出错 yum install mysql mysql-server mysql-devel -y 解决&#xff1a; 1.更改DNS配置 vi /etc/resolv.conf 添加下面内容&#xff1a; nameserver 8.8.8.8 …

RISC-V架构的压缩指令集介绍

1、压缩指令集介绍 RISC-V的压缩指令集&#xff08;C扩展&#xff09;‌是一种设计用于减少代码大小和提高性能的技术。标准的RISC-V指令是32位&#xff0c;压缩指令集可以将部分32位的指令用16位的指令替代&#xff0c;从未减小程序占用存储空间的大小&#xff0c;提高指令密…

Day13 苍穹外卖项目 工作台功能实现、Apache POI、导出数据到Excel表格

目录 1.工作台 1.1 需求分析和设计 1.1.1 产品原型 1.1.2 接口设计 1.2 代码导入 1.2.1 Controller层 1.2.2 Service层接口 1.2.3 Service层实现类 1.2.4 Mapper层 1.3 功能测试 1.4 代码提交 2.Apache POI 2.1 介绍 2.2 入门案例 2.2.1 将数据写入Excel文件 2.2.2 读取Excel文…

集星獭 | 高性能编排:为实时数据集成而生!

概要介绍 服务编排作为集星獭驱动业务流、数据流中不可或缺的重要环节&#xff0c;其基于分布式架构打造&#xff0c;提供了高可用、易扩展的可视化流程任务调度功能。 原服务编排的设计初衷是专注于任务调度&#xff0c;提供高性能任务调度&#xff0c;但是在实时调用方面的…

达梦8-达梦数据的示例用户和表

1、示例库说明&#xff1a; 创建达梦数据的示例用户和表&#xff0c;导入测试数据。 在完成达梦数据库的安装之后&#xff0c;在/opt/dmdbms/samples/instance_script目录下有用于创建示例用户的SQL文件。samples目录前的路径根据实际安装情况进行修改&#xff0c;本文将达梦…

windwos defender实现白名单效果(除了指定应用或端口其它一律禁止)禁止服务器上网

一、应用场景说明 当我们的一台windows服务器中毒&#xff0c;变成别人肉鸡&#xff0c;不断向外请示非法网站或攻击其它服务器。 要彻底清除相关木马或病毒往往需要的时间比较长&#xff0c;比较有效的方法是禁止服务器主动向外发包除了网站端口和远程程序除外。 其实这就是一…

1 JVM JDK JRE之间的区别以及使用字节码的好处

JDK jdk是编译java源文件成class文件的&#xff0c;我们使用javac命令把java源文件编译成class文件。 我们在java安装的目录下找到bin文件夹&#xff0c;如下图所示: 遵循着编译原理&#xff0c;把java源文件编译成JVM可识别的机器码。 其中还包括jar打包工具等。主要是针对…

【机器人】机械臂轨迹和转矩控制对比

动力学控制和轨迹跟踪控制是机器人控制中的两个概念&#xff0c;它们在目标、方法和应用上有所不同&#xff0c;但也有一定关联。以下是它们的区别和联系&#xff1a; 1. 动力学控制 动力学控制是基于机器人动力学模型的控制方法&#xff0c;目标是控制机器人关节力矩或力&…

Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类

Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类 CIFAR10数据集ParNet架构特点优势应用 ParNet结构代码详解结构代码代码详解SSEParNetBlock 类DownsamplingBlock 类FusionBlock 类ParNet 类 训练过程和测试结果代码汇总parnet.pytrain.pytest.py 前面文章我们构…

Go1.21.0 到 Go1.23.0 的改动,向前兼容性和toolchain规则,Go1.21.0,必须升级你的Go啦

Go各版本Release Note Go1.21.0 2023-08-08 https://go.dev/doc/go1.21 内置方法 min & max&#xff1a;返回一个序列中的最大值最小值。 https://go.dev/ref/spec#Min_and_max clear&#xff1a;清空map和slice。 https://go.dev/ref/spec#Clear 标准库 log/slo…

Unity中的委托和事件(UnityAction、UnityEvent)

委托和事件 &#x1f392;什么是委托&#xff0c;委托的关键字是Delegate&#xff0c;委托是一种函数的容器&#xff0c;运行将函数做为变量来进行传递 通过Delegate关键字我们声明了一个无参无返回的委托&#xff0c;通过这个委托我们可以存储无参无返回的函数 public deleg…

uniapp v-tabs修改了几项功能,根据自己需求自己改

根据自己的需求都可以改 这里写自定义目录标题 1.数组中的名字过长&#xff0c;导致滑动异常2.change 事件拿不到当前点击的数据&#xff0c;通过index在原数组中查找得到所需要的id 各种字段麻烦3.添加指定下标下新加红点显示样式 1.数组中的名字过长&#xff0c;导致滑动异常…

CAD xy坐标标注(跟随鼠标位置实时移动)——C#插件实现

效果如下&#xff1a; &#xff08;使用方法&#xff1a;命令行输入 “netload” 加载此dll插件&#xff0c;然后输入“zbbz”运行&#xff0c;选择文件夹即可。支持字体大小变化&#xff0c;输入“zbbd”可设置坐标字体变大或缩小的倍数&#xff09; 部分代码如下&#xff1a;…

【C#】实现Json转Lua (Json2Lua)

关键词: C#、JsonToLua、Json2Lua、对象序列化Lua 前提需引入NewtonsofJson&#xff0c;引入方法可先在Visual Studio 2019 将Newtonsoft.Json.dll文件导入Unity的Plugins下。 Json格式字符串转Lua格式字符串&#xff0c;效果如下&#xff1a; json字符串 {"1": &q…

Redis 7.x如何安装与配置?保姆级教程

大家好&#xff0c;我是袁庭新。最新写了一套最新版的Redis 7.x企业级开发教程&#xff0c;今天先给大家介绍下Redis 7.x如何在Linux系统上安装和配置。 1 Redis下载与安装 使用非关系型数据库Redis必须先进行安装配置并开启Redis服务&#xff0c;然后使用对应客户端连接使用…

Redis篇--常见问题篇6--缓存一致性1(Mysql和Redis缓存一致,更新数据库删除缓存策略)

1、概述 在使用Redis作为MySQL的缓存层时&#xff0c;缓存一致性问题是指Redis中的缓存数据与MySQL数据库中的实际数据不一致的情况。这可能会导致读取到过期或错误的数据&#xff0c;从而影响系统的正确性和用户体验。 为了减轻数据库的压力&#xff0c;通常读操作都是先读缓…

git remote -v(--verbose)显示你的 Git 仓库配置的远程仓库的详细信息

git remote -v 是一个 Git 命令&#xff0c;用于显示你的 Git 仓库配置的远程仓库的详细信息。 当你执行 git remote -v 命令时&#xff0c;你会看到类似以下的输出&#xff1a; origin https://github.com/your-username/your-repo.git (fetch) origin https://github.com…

[计算机网络]唐僧的”通关文牒“NAT地址转换

1.NAT&#xff1a;唐僧的通关文牒 在古老的西游记中&#xff0c;唐僧师徒四人历经九九八十一难&#xff0c;终于取得了真经。然而&#xff0c;他们并不是一开始就获得了通关文牒&#xff0c;而是经过了重重考验&#xff0c;最终得到了国王的认可&#xff0c;才顺利通过了各个关…

WPF实现曲线数据展示【案例:震动数据分析】

wpf实现曲线数据展示&#xff0c;函数曲线展示&#xff0c;实例&#xff1a;震动数据分析为例。 如上图所示&#xff0c;如果你想实现上图中的效果&#xff0c;请详细参考我的内容&#xff0c;创作不易&#xff0c;给个赞吧。 一共有两种方式来实现&#xff0c;一种是使用第三…

7 家使用量子计算的公司

劳斯莱斯、Deloitte、BASF、Roche、富士通、JPMorgan和宝马是率先开展量子计算实验的部分公司。 商用量子计算的实现仍需数年时间&#xff0c;但这并未阻止世界上一些知名企业对其进行试验。在许多情况下&#xff0c;利用当下有噪声的中等规模量子&#xff08;NISQ&#xff09…