GITLAB Docker 容器化部署指南

753次阅读
没有评论

共计 5313 个字符,预计需要花费 14 分钟才能阅读完成。

概述

GitLab Community Edition(简称 GITLAB-CE)是一款开源的 DevOps 平台,集成了代码仓库管理、版本控制、issue 跟踪、CI/CD 流水线、Wiki 和容器仓库等功能,为软件开发团队提供一站式的协作解决方案。通过 Docker 容器化部署 GITLAB-CE,可大幅简化安装流程、提高环境一致性,并便于快速扩展和迁移。本文将详细介绍如何通过 Docker 快速部署 GITLAB-CE,并提供生产环境优化建议及故障排查方案。

环境准备

Docker 环境安装

GITLAB-CE 容器化部署依赖 Docker 引擎,推荐使用以下一键安装脚本完成 Docker 环境配置(支持 Ubuntu/Debian/CentOS 等主流 Linux 发行版):

bash <(wget -qO- https://xuanyuan.cloud/docker.sh)

脚本将自动完成 Docker 引擎、Docker Compose 的安装,并配置开机自启动。安装完成后,可通过以下命令验证 Docker 状态:

docker --version       # 验证 Docker 引擎版本
docker compose version # 验证 Docker Compose 版本
systemctl status docker # 检查 Docker 服务状态

镜像准备

镜像信息说明

GITLAB-CE 官方镜像由 GitLab 团队维护,镜像详细信息及所有可用标签可参考 轩辕镜像 – GITLAB-CE 文档 GITLAB-CE 镜像标签列表

镜像拉取命令

# 拉取最新稳定版(推荐)docker pull xxx.xuanyuan.run/gitlab/gitlab-ce:latest

# 如需指定版本,将标签替换为具体版本号(例如 16.10.0-ce.0)# docker pull xxx.xuanyuan.run/gitlab/gitlab-ce:16.10.0-ce.0

镜像验证

拉取完成后,通过以下命令验证镜像是否成功下载:

docker images | grep gitlab/gitlab-ce

若输出类似以下内容,说明镜像拉取成功:

xxx.xuanyuan.run/gitlab/gitlab-ce   latest    xxxxxxxx    2 weeks ago    2.1GB

容器部署

部署前准备

GITLAB-CE 运行需持久化存储配置、日志和数据,建议在主机创建专用目录并设置权限:

# 创建数据存储目录
sudo mkdir -p /srv/gitlab/{config,logs,data}

# 设置目录权限(确保容器内进程可读写)sudo chmod -R 777 /srv/gitlab

容器运行命令

使用以下命令启动 GITLAB-CE 容器,包含端口映射、数据卷挂载及基础配置:

docker run -d \
  --name gitlab-ce \
  --restart always \
  --hostname gitlab.example.com \  # 替换为实际主机域名或 IP
  -p 80:80 \                       # HTTP 端口映射(主机: 容器)-p 443:443 \                     # HTTPS 端口映射
  -p 2222:22 \                     # SSH 端口映射(避免与主机 22 端口冲突)-v /srv/gitlab/config:/etc/gitlab \    # 配置文件持久化
  -v /srv/gitlab/logs:/var/log/gitlab \  # 日志文件持久化
  -v /srv/gitlab/data:/var/opt/gitlab \  # 数据文件持久化
  -e GITLAB_ROOT_PASSWORD="Admin123!" \  # 初始 root 密码(替换为强密码)xxx.xuanyuan.run/gitlab/gitlab-ce:latest

参数说明

  • --restart always:容器退出时自动重启
  • -p 80:80:将主机 80 端口映射到容器 HTTP 服务端口
  • -p 443:443:HTTPS 端口映射(后续可配置 SSL 证书)
  • -p 2222:22:SSH 端口映射(主机 2222 对应容器 22,避免冲突)
  • -v:挂载数据卷,确保配置、日志和数据持久化
  • -e GITLAB_ROOT_PASSWORD:设置管理员(root)初始密码

容器状态检查

容器启动后,通过以下命令监控初始化进度(首次启动需 10-15 分钟,取决于服务器性能):

# 查看容器运行状态
docker ps | grep gitlab-ce

# 查看初始化日志(关键步骤)docker logs -f gitlab-ce

当日志中出现类似 gitlab Reconfigured! 的信息时,说明初始化完成。

功能测试

访问 Web 界面

在浏览器中输入主机 IP 或域名(如 http://192.168.1.100),首次访问将显示 GitLab 登录页面。使用用户名root 及容器启动时设置的 GITLAB_ROOT_PASSWORD 密码登录。

基本功能验证

1. 创建项目

  • 登录后点击右上角 ”+” 图标,选择 ”New project”
  • 输入项目名称(如 ”test-project”),选择 ”Public” 或 ”Private”
  • 点击 ”Create project” 完成创建

2. 克隆项目测试

通过 HTTPS 或 SSH 方式克隆项目(以 HTTPS 为例):

# 替换为实际项目 URL
git clone http://192.168.1.100/root/test-project.git

3. 提交代码测试

在克隆的项目中创建文件并提交:

cd test-project
echo "Hello GitLab" > README.md
git add README.md
git commit -m "Initial commit"
git push origin main

返回 Web 界面刷新项目页面,若能看到提交的 README.md 文件,说明代码仓库功能正常。

4. CI/CD 功能验证(可选)

在项目根目录创建 .gitlab-ci.yml 文件,内容如下:

stages:
  - test

test_job:
  stage: test
  script:
    - echo "CI/CD pipeline test passed"

提交后进入项目 ”CI/CD > Pipelines” 页面,若显示流水线状态为 ”passed”,说明 CI/CD 功能正常。

生产环境建议

硬件资源配置

GITLAB-CE 对资源要求较高,生产环境建议配置:

  • CPU:至少 2 核(推荐 4 核及以上)
  • 内存:至少 4GB(推荐 8GB 及以上,内存不足会导致性能严重下降)
  • 存储:SSD 硬盘,至少 50GB 可用空间(根据代码仓库大小调整)

安全加固

1. 配置 HTTPS

通过 Let’s Encrypt 获取免费 SSL 证书,并在 GitLab 中配置:

# 进入容器修改配置
docker exec -it gitlab-ce vi /etc/gitlab/gitlab.rb

# 修改以下配置(替换为实际域名)external_url 'https://gitlab.example.com'
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['[email protected]']

# 重新配置 GitLab
docker exec -it gitlab-ce gitlab-ctl reconfigure

2. 限制容器权限

运行容器时添加 --user 参数指定非 root 用户,或使用 --cap-drop=ALL 减少容器权限:

docker run -d \
  --name gitlab-ce \
  --user 1000:1000 \  # 使用主机普通用户 ID(需提前创建并授权目录)--cap-drop=ALL \    # 禁用所有 Linux capabilities
  # 其他参数...

3. 防火墙配置

仅开放必要端口(80/443/2222),以 UFW 为例:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 2222/tcp
sudo ufw enable

数据备份策略

1. 自动备份配置

修改 GitLab 配置启用自动备份:

docker exec -it gitlab-ce vi /etc/gitlab/gitlab.rb

# 设置备份保留时间(7 天)和备份路径
gitlab_rails['backup_keep_time'] = 604800
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

# 配置定时备份(每天凌晨 2 点执行)echo "0 2 * * * gitlab-backup create" | docker exec -it gitlab-ce tee -a /etc/crontab

# 重新配置
docker exec -it gitlab-ce gitlab-ctl reconfigure

2. 备份文件迁移

定期将备份文件(位于/srv/gitlab/data/backups)复制到外部存储:

# 示例:同步到远程服务器
rsync -avz /srv/gitlab/data/backups/ user@backup-server:/path/to/backups/

监控与日志管理

1. 启用 Prometheus 监控

GitLab 内置 Prometheus,修改配置开启:

prometheus['enable'] = true
node_exporter['enable'] = true

通过 https://gitlab.example.com/-/metrics 访问监控指标,结合 Grafana 可实现可视化监控。

2. 日志轮转配置

修改 /etc/gitlab/gitlab.rb 配置日志轮转策略:

logging['logrotate_frequency'] = 'daily'    # 每天轮转
logging['logrotate_maxsize'] = '100M'       # 单个日志文件最大 100MB
logging['logrotate_rotate'] = 30            # 保留 30 天日志

故障排查

常见问题及解决方法

1. 容器启动后无法访问 Web 界面

  • 检查容器状态docker ps | grep gitlab-ce,若状态为 ”restarting”,查看日志:docker logs gitlab-ce
  • 端口冲突 :使用netstat -tuln | grep 80 检查端口是否被占用,若冲突需修改端口映射(如-p 8080:80
  • 内存不足:查看系统内存使用free -m,若内存不足(剩余 <1GB),需增加内存或关闭其他服务

2. 初始密码无法登录

  • 密码文件路径 :通过数据卷在主机/srv/gitlab/config/initial_root_password 查看初始密码
  • 文件时效:初始密码文件会在容器启动 24 小时后自动删除,若已删除,通过以下命令重置密码:docker exec -it gitlab-ce gitlab-rails console # 在控制台中执行(需等待加载完成)user = User.where(id: 1).first user.password = 'NewStrongPassword123!' user.save! exit

3. CI/CD 流水线执行失败

  • Runner 未注册:进入 ”Settings > CI/CD > Runners”,按照指引注册 GitLab Runner
  • 权限问题:确保 Runner 具有足够权限访问代码仓库,或使用共享 Runner
  • 日志排查:在流水线详情页面点击失败任务,查看 ”Job log” 获取具体错误信息

4. 数据备份失败

  • 磁盘空间:检查备份目录所在磁盘空间df -h /srv/gitlab/data,确保有足够空间
  • 权限问题:确认备份目录权限为 777(chmod -R 777 /srv/gitlab/data/backups
  • 手动执行备份测试docker exec -it gitlab-ce gitlab-backup create,查看输出错误信息

参考资源

总结

本文详细介绍了 GITLAB-CE 的 Docker 容器化部署方案,从环境准备、镜像拉取、容器运行到功能验证,提供了完整的操作流程,并针对生产环境给出了资源配置、安全加固、备份策略等优化建议,同时覆盖了常见故障的排查方法。

关键要点

  • 使用一键脚本可快速完成 Docker 环境及镜像加速配置,简化部署流程
  • 镜像拉取命令为docker pull xxx.xuanyuan.run/gitlab/gitlab-ce:latest
  • 数据卷挂载是持久化 GitLab 配置、日志和数据的核心,生产环境必须配置
  • 初始密码需在容器启动 24 小时内获取,或通过控制台手动重置
  • 生产环境需重点关注资源配置(尤其是内存)和安全加固(如 HTTPS 配置)

后续建议

  • 深入学习 GitLab CI/CD 功能,配置自动化构建、测试和部署流水线
  • 根据团队规模和需求,调整 GitLab 角色权限及项目管理策略
  • 建立定期备份机制,并测试备份恢复流程,确保数据安全
  • 关注 GitLab 官方更新日志,及时升级镜像以获取新功能和安全补丁

通过容器化部署 GITLAB-CE,团队可快速搭建企业级 DevOps 平台,提升开发协作效率。如需进一步扩展,可结合 Docker Compose 或 Kubernetes 实现更复杂的部署架构。

正文完
 0
轩源
版权声明:本站原创文章,由 轩源 于2025-12-04发表,共计5313字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
支持作者

☝️用微信请我喝杯咖啡☕️

😛如果文章对您有用,请支持作者😛

支持作者

☝️用支付宝请我喝杯奶茶🧋

评论(没有评论)