在现代软件开发流程中,代码仓库管理系统已成为团队协作的核心工具。 GitLab Community Edition(CE)作为一款MIT协议的开源的代码管理平台,集成了代码托管、持续集成、项目管理、安全扫描等全栈开发功能,为开发者提供了一站式的 DevOps 解决方案。本指南旨在为技术团队提供一份结构清晰、步骤明确的 GitLab CE Docker 方式部署手册,帮助用户快速构建安全可靠的代码管理环境。
1.需求配置
CPU需要2~4核心,内存4~8GB即可,储存空间根据代码规模决定。
2. 使用Docker安装Gitlab
# Docker Compose 配置文件用于部署 GitLab Community Edition (CE)
# 注意:请根据实际环境调整配置参数
services:
gitlab:
# 使用官方 GitLab CE 最新镜像
image: gitlab/gitlab-ce:latest
# 容器名称(可通过 docker ps 查看)
container_name: gitlab
# 重启策略(always: 始终重启,除非容器被手动停止)
restart: always
# 宿主主机名(需与 external_url 域名一致)
hostname: 'gitlab.example.com'
environment:
# GitLab 配置参数入口(通过 omnibus GitLab 配置文件)
GITLAB_OMNIBUS_CONFIG: |
# 自定义 gitlab.rb 配置(每行一个配置项)
# 配置外网访问地址(必须使用 HTTPS)
external_url 'https://git.procoding.cn' # 替换为你的实际域名
ports:
# 端口映射说明:
# - HTTP 80 -> 容器 80(需配合 HTTPS 证书使用)
# - HTTPS 443 -> 容器 443(实际 HTTPS 请求入口)
# - SSH 22 -> 容器 22(代码克隆与 Git 操作)
- '80:80'
- '443:443'
- '22:22'
volumes:
# 目录挂载说明:
# - 系统配置文件(包含 gitlab.rb)
- '/data/gitlab/config:/etc/gitlab'
# - 日志目录(包括系统日志和 CI 构建日志)
- '/data/gitlab/logs:/var/log/gitlab'
# - 数据存储(包含数据库、仓库、上传文件等)
- '/data/gitlab/data:/var/opt/gitlab'
# 共享内存设置(GitLab CI/CD 需要较大共享内存)
# 默认 shm_size 是64MB,GitLab 推荐至少 256MB
shm_size: '256m'
保存为gitlab.yaml ,执行命令:
mkdir -p /data/gitlab/{config,logs,data}
chmod -R 775 /data/gitlab
docker-compose -f gitlab.yaml up -d
输入刚才的网址,账号root,使用下面的密码即可登录。
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
启用HTTPS并配置证书,修改/etc/gitlab/gitlab.rb文件,配置这几行:
nginx['enable'] = true
nginx['redirect_http_to_https'] = false
nginx['ssl_certificate'] = "/etc/gitlab/ssl/_.procoding.crt" #你的证书crt路径
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/_.procoding.key" #你的证书key路径
然后重启容器
docker restart gitlab
优化建议:
1. /etc/gitlab/gitlab.rb 中减少puma-worker数量,gitlab的puma-worker是本机的核心线程数+1,也就是CPU越多puma-worker线程数就越多,导致CPU内存占用过多,最终内存耗尽导致业务崩溃。gitlab-puma-worker
是 GitLab 使用的 Puma 应用服务器的工作进程。它是实际执行 GitLab 核心 Web 应用逻辑、处理用户浏览器和 API 请求的进程。

puma['enable'] = true
# puma['ha'] = false
# puma['worker_timeout'] = 60
puma['worker_processes'] = 2 #禁用或者限制worker_processes
puma['min_threads'] = 2
puma['max_threads'] = 4
View Comments