Docker 部署 GitLab CE 完整版教程

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

概述

GitLab Community Edition(GitLab CE)是开源一站式 DevOps 平台,集成代码托管、版本控制、Issue 管理、CI/CD 流水线、Wiki、容器仓库等核心功能。
使用 Docker 容器化部署 可大幅简化安装、保证环境一致性、方便迁移与升级,是个人/企业快速搭建代码托管平台的最优方案。

本文包含:一键部署、持久化配置、登录使用、生产环境加固、高频故障排查,全程可直接复制命令执行。


一、环境准备

1.1 安装 Docker(一键脚本,支持 Ubuntu/CentOS)

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

安装完成验证:

docker --version
docker compose version
systemctl status docker

1.2 服务器最低要求(必看)

  • CPU:≥2核
  • 内存:≥4GB(低于 2GB 绝对无法启动)
  • 存储:SSD ≥20GB

二、拉取 GitLab CE 镜像

2.1 拉取稳定版(推荐固定版本,避免 latest 自动更新)

# 推荐稳定版
docker pull gitlab/gitlab-ce:19.0.1-ce.0

# 如需使用国内加速镜像
# docker pull docker.xuanyuan.run/gitlab/gitlab-ce:19.0.1-ce.0

2.2 验证镜像

docker images | grep gitlab-ce

三、容器部署(最关键步骤)

3.1 创建持久化目录(数据不丢失)

sudo mkdir -p /data/gitlab/{
   config,logs,data}

3.2 启动 GitLab 容器(标准生产命令)

如果之前运行失败、创建过旧容器,必须先删除:

docker rm -f gitlab

正式启动命令:

docker run -d \
  --hostname gitlab.example.com \
  --publish 80:80 \
  --publish 443:443 \
  --publish 2222:22 \
  --name gitlab \
  --restart always \
  --volume /data/gitlab/config:/etc/gitlab \
  --volume /data/gitlab/logs:/var/log/gitlab \
  --volume /data/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:19.0.1-ce.0

3.3 端口说明

  • 80:Web 访问端口
  • 443:HTTPS 端口
  • 2222:Git SSH 克隆端口(避免与主机 22 冲突)

四、启动状态检查

4.1 查看容器是否运行

docker ps

看到 gitlab 状态为 Up 即运行正常。

4.2 实时查看初始化日志(必看)

docker logs -f gitlab

出现以下任意一行,代表启动完成:

  • gitlab Reconfigured!
  • Puma starting

首次启动非常慢(小内存机器可能需要 5~10 分钟),耐心等待!


五、登录 GitLab Web 界面

5.1 访问地址

http://你的服务器IP

5.2 获取默认管理员密码(自动生成)

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

5.3 登录信息

  • 用户名:root
  • 密码:上面命令输出的字符串

gitlab 登录页

5.4 登录后必须做

  1. 修改 root 密码
  2. 关闭用户注册(后台 → 设置 → 通用)
  3. 配置外部访问 URL
  4. 配置邮件服务

gitlab 主页


六、Git 使用示例(克隆/提交)

由于 SSH 端口改为 2222,克隆命令格式如下:

git clone ssh://git@服务器IP:2222/root/demo.git

HTTP 方式:

git clone http://服务器IP/root/demo.git

七、生产环境优化建议

7.1 服务器资源

  • 内存 ≥8GB
  • CPU ≥4核
  • SSD 存储

7.2 防火墙放行(Ubuntu/Debian)

ufw allow 80
ufw allow 443
ufw allow 2222
ufw reload

7.3 云服务器安全组(阿里云/腾讯云/华为云)

必须开放以下端口:

  • 80
  • 443
  • 2222

7.4 数据备份

# 手动备份
docker exec -it gitlab gitlab-backup create

# 自动备份(配置 gitlab.rb 开启)

八、高频故障排查(最实用)

问题 1:浏览器提示 ERR_CONNECTION_REFUSED(拒绝连接)

原因 99% 是以下之一:

  1. GitLab 还没初始化完成
  2. 80 端口未监听成功
  3. 服务器防火墙没放行
  4. 云服务器安全组未开放端口

排查命令:

# 查看 80 端口是否监听
ss -lntp | grep :80

# 查看最后 50 行日志
docker logs gitlab --tail 50

问题 2:找不到 initial_root_password 文件

说明:GitLab 未初始化完成
解决:继续等待,直到日志出现 Reconfigured

问题 3:容器反复重启

原因:内存不足
解决:升级服务器内存 ≥4GB。

问题 4:Web 打开 502

原因:GitLab 还在启动中 / 资源占用过高
解决:等待 3~5 分钟即可。


九、常用管理命令

# 重启 GitLab
docker restart gitlab

# 停止 GitLab
docker stop gitlab

# 删除容器(保留数据)
docker rm -f gitlab

# 查看实时日志
docker logs -f gitlab

总结(核心要点)

  1. 第一次启动极慢,必须等日志出现 Reconfigured 才能访问
  2. 管理员账号固定为 root,密码自动生成
  3. 80/443/2222 三个端口必须放行
  4. 数据目录在 /data/gitlab,删除容器不会丢失数据
  5. 内存 <4GB 基本无法正常运行
目录
相关文章
|
Ubuntu 应用服务中间件 项目管理
部署gitlab详解
部署gitlab详解
部署gitlab详解
|
应用服务中间件 数据安全/隐私保护 nginx
Gitlab----使用Docker方式安装部署Gitlab
Gitlab----使用Docker方式安装部署Gitlab
14989 1
Gitlab----使用Docker方式安装部署Gitlab
|
jenkins 持续交付 Docker
Jenkins - 插件安装失败处理方法
Jenkins - 插件安装失败处理方法
11842 1
Jenkins - 插件安装失败处理方法
|
弹性计算 搜索推荐 网络安全
使用阿里云ECS搭建Perforce服务器用于Unreal(虚幻,Ue4)项目版本管理
游戏项目通常有很多二进制文件,如游戏贴图和各类游戏资产。使用面向文本文件的版本管理工具如git时,会导致诸多问题:1. 分支和版本的增加使项目迅速膨胀。2. 受到代码仓库的文件大小限制而无法上传文件。虚幻官方推荐面向文件的Perforce或SVN作为版本同步工具,本文介绍如何使用阿里云ECS搭建Perforce版本管理服务器的流程。
使用阿里云ECS搭建Perforce服务器用于Unreal(虚幻,Ue4)项目版本管理
|
开发工具 git
Gitlab配置mirrorRepository 镜像仓库
Gitlab配置mirrorRepository 镜像仓库 🔊业务场景📆1.在a项目中点击settings-》repository-》mirroring repositories📌tips🧣最后的话
1594 0
|
2月前
|
关系型数据库 MySQL 数据安全/隐私保护
Docker 部署 Redmine:老牌开源项目管理部署实测记录
团队用 Jira、禅道、飞书项目,数据不在自己手里?Redmine 是一款开源、可自托管的项目管理与问题跟踪系统——支持 工单、甘特图、Wiki、版本库、时间跟踪,Docker Compose 双容器(Redmine + MySQL)即可跑通。浏览器打开就能建项目、派任务、看进度,数据全在你自己的服务器上。 本文带你完成一次 Redmine Docker Compose 私有化部署:镜像加速拉取、编写 docker-compose.yml、处理 3000 端口冲突、读懂启动日志,到浏览器 admin 登录、强制改密、切换中文、载入默认配置、新建第一个项目——全程零基础可跟做。
547 0
Docker 部署 Redmine:老牌开源项目管理部署实测记录
|
5月前
|
存储 Linux Docker
告别繁琐安装!Obsidian 容器化部署,跨设备访问笔记自由
Obsidian 作为一款备受欢迎的本地知识管理工具,凭借其灵活的笔记链接、本地存储优势,成为很多开发者、知识管理者的首选。而通过 Docker 部署 Obsidian,不仅能实现跨环境快速部署,还能轻松实现数据持久化,适配 NAS、服务器、个人电脑等多种场景。本文将详细介绍 Windows 和 Linux 两大系统下,通过 Docker 部署 Obsidian 的完整流程,同时提供 Docker 一键安装命令,降低部署门槛。
1421 2
|
5月前
|
缓存 监控 Java
Alpine 作为基础镜像安装 OpenJDK 21 的完整踩坑过程与最佳实践
本文详述 Alpine Linux 下安装 OpenJDK 21 的踩坑历程:从仓库冲突、清华源加速失败,到通过 `gcompat` 解决 musl libc 段错误(exit 139);最终给出优化 Dockerfile,并强烈推荐使用成熟镜像如 `eclipse-temurin:21-jre-alpine`——省心、稳定、轻量。(239字)
1411 2
|
运维 程序员 开发者
Docker凉了,国内镜像站全军覆没!
近期在使用Docker部署时,因网络问题导致镜像拉取失败。尽管尝试了阿里云、清华、中科大等国内镜像站均无效,最终找到仍可用的镜像源并分享解决方案。文中提供可正常访问的镜像地址及配置方法,帮助开发者快速恢复开发环境,解决燃眉之急。
6192 2
Docker凉了,国内镜像站全军覆没!