docker + docker-compose 部署 gitlab ce 是中小团队最轻量、可复现的私有化方案,内置代码托管、ci/cd、镜像仓库及项目管理功能;需配置 external_url、映射 8181:80/2222:22 端口,首次启动后设 root 密码并关闭本地网络钩子以加固安全。

直接用 Docker + docker-compose 部署 GitLab CE,是目前最轻量、可复现、适合中小团队的私有化方案。它能同时承载代码托管、CI/CD 流水线、容器镜像仓库和基础项目管理,不需要额外搭 Jenkins 或 Harbor。
选对版本与部署方式
GitLab CE(Community Edition)完全开源免费,2026 年最新稳定版已内置:
- Git 仓库管理(含分支保护、MR 审核、代码搜索)
- 内建 GitLab Runner,开箱支持 .gitlab-ci.yml 流水线
- 集成 Container Registry(镜像仓库,默认启用)
- 问题跟踪、看板、Wiki、代码片段等协作功能
不推荐源码编译或 Omnibus 包安装——Docker 方式资源隔离好、升级简单、配置集中,且能绕过 Ruby 环境依赖问题。
关键端口与网络准备
GitLab CE 容器需对外暴露三个核心端口,建议提前确认服务器防火墙及云厂商安全组设置:
- 80 / 443:HTTP/HTTPS 访问 Web 界面(推荐用 Nginx 反向代理做 SSL 终止)
- 22:SSH 协议克隆/推送代码(若禁用 SSH,可只走 HTTPS,但无法使用 deploy keys 的部分高级场景)
如服务器已有 Nginx,建议让 GitLab 容器监听本地端口(如 8181),由 Nginx 统一处理 TLS 和域名转发,更安全也更灵活。
使用约定式提交(Conventional Commits)从 Git 历史记录中生成结构化变更日志,支持多种格式、AI 增强型描述以及可自定义的范围……
最小可用 docker-compose.yml 示例
以下配置基于官方 gitlab/gitlab-ce:latest 镜像(截至 2026 年 6 月仍持续维护),已适配主流 Linux 发行版:
version: '3.8'
services:
gitlab:
image: gitlab/gitlab-ce:latest
restart: always
hostname: gitlab.yourdomain.com
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.yourdomain.com'
gitlab_rails['gitlab_shell_ssh_port'] = 22
registry_external_url 'https://registry.yourdomain.com'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
ports:
- "8181:80" # Web UI(交由 Nginx 代理)
- "2222:22" # SSH(映射到宿主机 2222,避免冲突)
- "5050:443" # 若直连 HTTPS(非必须,推荐用 Nginx)
volumes:
- ./gitlab/config:/etc/gitlab
- ./gitlab/logs:/var/log/gitlab
- ./gitlab/data:/var/opt/gitlab
shm_size: '256m'
说明:
- 首次运行后,
./gitlab/config下会生成完整配置,后续可微调gitlab.rb - 务必设置
external_url,否则 CI/CD 中自动注入的 clone 地址、Webhook 回调地址会出错 - SSH 端口映射为
2222:22是为了避开宿主机默认 SSH 占用;用户克隆时写git@gitlab.yourdomain.com:xxx/yyy.git,实际走的是 2222 端口
初始化与基础安全加固
启动后等待 3–5 分钟(首次启动会初始化数据库和证书),再访问 https://gitlab.yourdomain.com:
- 首次访问会提示设置 root 密码,设完即可登录
- 登录后立即进入 Admin Area → Settings → Network,关闭“Allow requests to the local network from hooks and services”,防止 SSRF
- 在 Admin Area → Settings → Visibility and access controls 中,建议将默认项目创建权限设为 “Private”,避免误公开代码
- 如需对接 LDAP/AD,可在 Admin Area → Settings → General → Account and sign-in 中配置,无需重启服务
CI/CD 默认已启用:新建项目后,放入 .gitlab-ci.yml 即可触发流水线,Runner 会自动注册并执行任务(无需额外部署 Runner,除非需要特定执行器如 Kubernetes 或 Windows)。










