企业级 GitLab 在 Docker 部署使用

在企业级开发环境中,版本控制是至关重要的一环。GitLab 作为一款功能强大的 Git 仓库管理系统,能够满足企业对于代码托管、协作开发、CI/CD 等多方面的需求。而 Docker 技术的兴起,使得应用的部署变得更加便捷、高效和可移植。本文将详细介绍如何在 Docker 环境中部署和使用企业级 GitLab,帮助企业快速搭建稳定可靠的代码管理平台。

目录#

  1. Docker 简介
  2. GitLab 企业版特性
  3. Docker 部署 GitLab 准备工作
  4. Docker 部署 GitLab 详细步骤
  5. GitLab 常见配置与优化
  6. GitLab 使用最佳实践
  7. 参考资料

1. Docker 简介#

Docker 是一个开源的应用容器引擎,它可以让开发者将应用程序及其依赖打包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker 的核心概念包括镜像(Image)、容器(Container)、仓库(Repository)等。镜像用于创建容器,仓库则用于存储和分发镜像。

2. GitLab 企业版特性#

GitLab 企业版相比社区版提供了更多高级功能,例如:

  • 高级权限管理:可以更精细地控制用户对项目、仓库的访问权限,满足企业复杂的组织架构需求。
  • 合规性与审计:提供详细的操作日志和审计功能,帮助企业满足合规要求。
  • 增强的 CI/CD 功能:支持更复杂的流水线配置、资源限制等,提升持续集成和持续交付的效率。
  • 高可用性支持:通过负载均衡、数据库复制等技术实现 GitLab 服务的高可用性。

3. Docker 部署 GitLab 准备工作#

3.1 环境要求#

  • 服务器:推荐至少 4GB 内存(根据实际项目数量和并发访问量调整),足够的磁盘空间(建议 50GB 以上用于存储代码仓库等数据)。
  • 操作系统:支持主流的 Linux 发行版,如 Ubuntu、CentOS 等。
  • Docker 安装:确保服务器已正确安装 Docker 引擎和 Docker Compose(用于编排多个容器)。

3.2 规划#

  • 域名:为 GitLab 规划一个合适的域名(如 gitlab.example.com),用于外部访问。
  • 数据存储:规划好 GitLab 数据(如代码仓库、配置文件、日志等)的存储位置,建议使用独立的磁盘分区或挂载外部存储。

4. Docker 部署 GitLab 详细步骤#

4.1 拉取 GitLab 镜像#

docker pull gitlab/gitlab-ee:latest

这里拉取的是最新的 GitLab 企业版镜像,也可以指定具体版本号(如 gitlab/gitlab-ee:14.0.0)。

4.2 创建 Docker Compose 文件(docker-compose.yml#

version: '3'
services:
  gitlab:
    image: gitlab/gitlab-ee:latest
    restart: always
    hostname: 'gitlab.example.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.example.com'
        gitlab_rails['gitlab_shell_ssh_port'] = 2222
    ports:
      - '80:80'
      - '443:443'
      - '2222:22'
    volumes:
      - './gitlab/config:/etc/gitlab'
      - './gitlab/logs:/var/log/gitlab'
      - './gitlab/data:/var/opt/gitlab'
  • hostname:设置 GitLab 实例的主机名,需与规划的域名一致。
  • external_url:指定 GitLab 的外部访问 URL。
  • gitlab_rails['gitlab_shell_ssh_port']:设置 SSH 访问端口(可根据需求调整)。
  • ports:映射容器端口到宿主机端口(80 用于 HTTP 访问,443 用于 HTTPS 访问,2222 用于 SSH 访问)。
  • volumes:挂载数据卷,将容器内的配置文件、日志和数据目录映射到宿主机的指定目录(需提前创建 ./gitlab/config./gitlab/logs./gitlab/data 目录)。

4.3 启动 GitLab 容器#

docker-compose up -d

-d 参数表示在后台运行容器。启动后,等待一段时间(首次启动可能需要几分钟进行初始化配置),然后通过浏览器访问 http://gitlab.example.com 即可看到 GitLab 的初始化设置页面。

5. GitLab 常见配置与优化#

5.1 备份与恢复#

  • 备份
docker exec -t gitlab gitlab-backup create

备份文件会存储在 ./gitlab/data/backups 目录下。

  • 恢复
docker exec -it gitlab gitlab-backup restore BACKUP=1625000000_2021_07_01_14.0.0

1625000000_2021_07_01_14.0.0 为备份文件的名称)

5.2 邮件配置#

编辑 ./gitlab/config/gitlab.rb 文件,添加以下配置:

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.example.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "your_email_password"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]'

然后重新配置 GitLab:

docker exec -it gitlab gitlab-ctl reconfigure

5.3 性能优化#

  • 调整 Unicorn 工作进程数量:编辑 ./gitlab/config/gitlab.rb,设置 unicorn['worker_processes'](根据服务器 CPU 核心数调整,一般为核心数的 2 倍左右)。
  • 优化数据库配置:如果使用外部数据库(如 PostgreSQL),合理配置数据库连接参数、缓存等。

6. GitLab 使用最佳实践#

6.1 项目组织#

  • 按团队或业务线创建组:例如 development 组、qa 组等,方便权限管理和项目分类。
  • 项目命名规范:采用有意义的命名,如 project-name-feature 格式,便于识别项目功能。

6.2 权限管理#

  • 最小权限原则:只给用户分配其工作所需的最低权限(如开发者只给 developer 权限, reviewer 给 reporter 权限等)。
  • 定期审核权限:随着人员变动和项目进展,及时调整用户权限。

6.3 CI/CD 流水线#

  • 缓存依赖:在 gitlab-ci.yml 中使用 cache 关键字缓存项目依赖(如 node_modulesvendor 等),加快构建速度。
  • 并行执行:对于可以独立运行的作业(如单元测试、代码质量检查等),设置 parallel 关键字实现并行执行。

7. 参考资料#

通过以上步骤和实践,企业可以在 Docker 环境中快速、稳定地部署和使用 GitLab,提升代码管理和开发协作的效率。希望本文对您有所帮助!