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。

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正常运行。

sh 复制代码
[root@localhost /]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since 六 2024-12-21 23:07:14 CST; 3h 29min ago
     Docs: https://docs.docker.com
 Main PID: 34141 (dockerd)
    Tasks: 67
   Memory: 151.2M
   CGroup: /system.slice/docker.service

docker安装教程:https://note.wym123.cn/docker/install/

3.2 检查Docker版本

检查Docker版本

sh 复制代码
[root@localhost /]# docker version
Client: Docker Engine - Community
 Version:           26.1.4
 API version:       1.45
 Go version:        go1.21.11
 Git commit:        5650f9b
 Built:             Wed Jun  5 11:32:04 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          26.1.4
  API version:      1.45 (minimum version 1.24)
  Go version:       go1.21.11
  Git commit:       de5c9cf
  Built:            Wed Jun  5 11:31:02 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.33
  GitCommit:        d2d58213f83a351ca8f528a95fbd145f5654e957
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

sh 复制代码
[root@localhost /]# docker compose version
Docker Compose version v2.27.1

三、Docker Compse版本升级(可选)

1. 从 GitHub 下载 Docker Compose

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

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


2. 上传到 Linux

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

    bash 复制代码
    scp docker-compose-linux-x86_64 root@<your-server-ip>:/usr/local/bin/
  2. 上传后,将文件重命名为 docker-compose

    bash 复制代码
    mv /usr/local/bin/docker-compose-linux-x86_64 /usr/local/bin/docker-compose

3. 添加执行权限

为二进制文件添加可执行权限:

bash 复制代码
chmod +x /usr/local/bin/docker-compose

4. 验证安装

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

    bash 复制代码
    docker-compose version
  2. 如果提示权限错误(如 Permission denied),需要重新添加可执行权限:

    bash 复制代码
    chmod +x /usr/local/bin/docker-compose

四、下载GitLab镜像

从docker hub下载GitLab镜像

sh 复制代码
[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 数据持久化,需要在宿主机上创建专用目录。执行以下命令:

    bash 复制代码
    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 文件:

    bash 复制代码
    vim /data/gitlab/docker-compose.yml
  2. 完整的 docker-compose.yml 示例

    yaml 复制代码
    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'  # 外部访问 URL
            gitlab_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 容器:

    bash 复制代码
    docker compose up -d
    • up:启动容器。
    • -d:以守护进程模式运行容器(后台运行)。
  2. 运行结果

    • 执行后,Docker Compose 将下载 gitlab/gitlab-ce:latest 镜像并启动容器。

    • 可以通过以下命令查看运行状态:

      bash 复制代码
      docker ps
    • 输出示例:

      plaintext 复制代码
      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 登录页:

    plaintext 复制代码
    http://192.168.0.50:80
    • 注意 :将 192.168.0.50 替换为您部署 GitLab 的服务器 IP 地址。

    • 如果配置了 HTTPS,则访问地址为:

      plaintext 复制代码
      https://192.168.0.50:8443

6.2 获取初始密码

在 GitLab 容器的首次启动过程中,会生成默认的超级管理员账号 root 和随机密码。初始密码可以通过以下命令查看:

  1. 查看初始密码文件

    在容器中查看初始密码:

    bash 复制代码
    docker exec -it gitlab cat /etc/gitlab/initial_root_password

    输出示例:

    plaintext 复制代码
    Password: KfK95J1yFzESkYkNjEkj

    说明

    • 密码文件位于 /etc/gitlab/initial_root_password
    • 该密码仅在首次启动时有效。
  2. 删除初始密码文件(可选)

    为了安全起见,可以在记下初始密码后删除该文件:

    bash 复制代码
    docker exec -it gitlab rm /etc/gitlab/initial_root_password

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

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

  1. 进入 GitLab 容器内部

    使用 Docker 命令进入容器:

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

    输出示例:

    plaintext 复制代码
    [root@docker gitlab]# docker exec -it gitlab /bin/bash
    root@192:/#
  2. 进入 Rails 控制台

    启动 GitLab 的 Rails 控制台:

    bash 复制代码
    gitlab-rails console -e production
    • -e production:以生产环境模式启动控制台。
  3. 查询超级管理员用户

    查询超级管理员用户信息(默认用户 ID 为 1):

    ruby 复制代码
    user = User.where(id: 1).first

    示例图片:

  4. 修改密码

    设置新的密码(以 admin36987 为例):

    ruby 复制代码
    user.password = 'admin36987'
  5. 保存修改并退出

    保存新密码并退出控制台:

    ruby 复制代码
    user.save!  # 保存更改
    exit        # 退出控制台

    示例图片:


6.4 访问 GitLab 首页

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

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

    修改密码:

  2. 首次登录时提示设置新密码

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


6.5 设置中文语言

  1. 进入 Preferences 页面

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

    plaintext 复制代码
    Profile > Preferences
  2. 修改语言设置

    Preferences 页面找到 Localization 区域,将 Language 选项修改为 简体中文

    示例图片:

    • 修改前:

    • 修改后:

  3. 保存设置

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

相关推荐
阿华hhh6 分钟前
项目(购物商城)
linux·服务器·c语言·c++
摸鱼仙人~13 分钟前
大模型文章生成的风格个性化与多文体写作:一套可落地的方法论
linux·运维·服务器
爬山算法1 小时前
Hibernate(30)Hibernate的Named Query是什么?
服务器·前端·hibernate
AC赳赳老秦1 小时前
Shell 脚本批量生成:DeepSeek 辅助编写服务器运维自动化指令
运维·服务器·前端·vue.js·数据分析·自动化·deepseek
菜鸟思维1 小时前
优化NextJs 项目的Docker 镜像 从3.62G 优化到 296.85M
docker
学Linux的语莫1 小时前
linux的root目录缓存清理
linux·运维·服务器
oMcLin1 小时前
如何在 SUSE Linux Enterprise Server 15 上部署并优化 K3s 集群,提升轻量级容器化应用的资源利用率?
linux·运维·服务器
怣疯knight1 小时前
Docker Desktop 4.55.0版本安装成功教程
windows·docker
Ghost Face...2 小时前
深入解析YT6801驱动模块架构
linux·运维·服务器
东方佑2 小时前
使用Docker Compose一键部署OnlyOffice:完整指南与配置解析
运维·docker·容器