GitLab 容器化部署指南

基于 Docker 的 GitLab 企业级部署与运维方案

📚 前言

GitLab 是一个强大的 DevOps 平台,本文将详细介绍如何使用 Docker 部署和维护 GitLab 服务,帮助您快速构建安全、可靠的代码托管环境。

🚀 一、环境准备

1.1 系统要求

  • CPU: 4核心及以上
  • 内存: 最少 4GB,推荐 8GB
  • 磁盘空间: 至少 50GB
  • Docker 版本: 20.10 或更高

1.2 部署命令

1
2
3
4
5
6
7
8
9
docker run --detach \
  --hostname 192.168.50.7 \
  --publish 9043:443 --publish 9080:80 --publish 9022:22 \
  --name gitlab \
  --restart always \
  --volume /mnt/nfs/gitlab/config:/etc/gitlab \
  --volume /mnt/nfs/gitlab/logs:/var/log/gitlab \
  --volume /mnt/nfs/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

1.3 参数说明

参数说明建议值
hostname访问地址公网IP或域名
publish端口映射建议使用非标准端口
volume数据持久化建议使用 SSD 存储

⚠️ 安全提示:避免使用 10080 端口,该端口可能被浏览器识别为不安全端口

⚙️ 二、配置优化

2.1 基础配置

1
2
# 进入容器
docker exec -it gitlab bash

2.2 核心配置

编辑 /etc/gitlab/gitlab.rb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 基础配置
external_url 'http://192.168.50.7:9080'

# SSH 服务配置
gitlab_rails['gitlab_ssh_host'] = '192.168.50.7'
gitlab_rails['gitlab_shell_ssh_port'] = 9022

# 系统优化配置
gitlab_rails['time_zone'] = 'Asia/Shanghai'
unicorn['worker_timeout'] = 60
unicorn['worker_processes'] = 3

# 备份策略配置
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 604800  # 7天保留期

2.3 应用配置

1
2
3
4
5
# 重载配置
gitlab-ctl reconfigure

# 重启服务
gitlab-ctl restart

💾 三、备份方案

3.1 手动备份

1
2
3
4
5
6
# 方式一:容器内执行
docker exec -it gitlab bash
gitlab-rake gitlab:backup:create

# 方式二:一键备份
docker exec gitlab gitlab-rake gitlab:backup:create

3.2 自动备份

创建备份脚本 /mnt/nfs/gitlab.backup.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash
# GitLab 自动备份脚本
# 作者: Your Name
# 更新时间: 2024-03-xx

case "$1" in
  start)
    echo "开始备份 GitLab..."
    docker exec gitlab gitlab-rake gitlab:backup:create
    echo "备份完成!"
    ;;
esac

配置定时任务:

1
2
3
4
5
# 编辑定时任务
crontab -e

# 每天凌晨 2 点执行备份
0 2 * * * /mnt/nfs/gitlab.backup.sh start >> /var/log/gitlab-backup.log 2>&1

🔧 四、故障排查

4.1 密码查看

1
2
docker exec -it gitlab bash
cat /etc/gitlab/initial_root_password

4.2 Runner 问题

现象:CI/CD 作业阻塞,无可用 Runner

解决方案

  1. Runner 设置优化 Runner配置

  2. CI 配置调整 CI设置

4.3 克隆端口问题

  1. 修改配置:
1
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
  1. 端口更新: 端口设置

  2. 服务重启:

1
gitlab-ctl restart

📋 五、最佳实践

5.1 安全建议

  • 启用 HTTPS
  • 定期更新密码
  • 配置防火墙规则
  • 启用双因素认证

5.2 性能优化

  • 合理配置 worker 进程
  • 定期清理未使用的数据
  • 监控系统资源使用

5.3 运维建议

  1. 建立备份验证机制
  2. 定期检查系统日志
  3. 制定故障恢复预案
  4. 保持版本及时更新

📞 六、帮助支持

如遇问题,请参考:


🔔 温馨提示:部署完成后,请及时修改默认密码并配置安全策略。

0%