docke-compose部署GitLabCE私有代码仓库
¶常用的私有 Git 服务器解决方案
根据不同的需求和场景推荐:
以下是一些常用的私有 Git 服务器解决方案,根据不同的需求和场景推荐:
¶GitLab CE(社区版)
- 特点:功能全面(支持 CI/CD、项目管理、代码审查等),适合中大型团队或企业。
- 优点:
- 集成 DevOps 工具链,支持自动化部署。
- 细粒度的权限管理和审计功能。
- 活跃的社区和持续更新。
缺点:
- 资源消耗较高(建议至少 4GB 内存)。
- 部署相对复杂,依赖较多。
部署方式:支持 Docker、Linux 包(如 apt/yum)、云镜像等。
¶Gitea
特点:轻量、易部署,适合个人或小团队。
优点:
- 单二进制文件,占用资源极少(1GB 内存即可运行)。
- 界面简洁,支持基础 Git 仓库管理、Issue 和 Wiki。
- 支持多语言(中文友好)。
缺点:高级功能(如 CI/CD)需通过插件或第三方工具实现。
部署方式:Docker、二进制直接运行、源码编译。
¶Gogs
特点:Gitea 的前身,更轻量但功能较少。
优点:
- 极简设计,适合对性能要求低的场景。
- 部署简单,配置快速。
缺点:
- 更新频率较低,社区活跃度不如 Gitea。
¶Bitbucket Server(Atlassian Server)
特点:企业级解决方案,适合与 Jira、Confluence 等工具集成。
优点:
- 深度支持企业工作流和权限管理。
- 商业支持,稳定性高。
缺点:
- 需要付费订阅(免费仅限小团队)。
- 部署和维护成本较高。
¶OneDev
特点:内置 CI/CD,界面现代化,开源免费。
优点:
- 集成 CI/CD、代码搜索、可视化工作流。
支持 Kubernetes 部署。
缺点:
- 社区相对较小,文档不如 GitLab 完善。
部署方式:Docker、Java JAR 包。
¶GitBucket
特点:基于 JVM(Scala 编写),插件扩展性强。
优点:
- 兼容 GitHub 的 API 和插件体系。
- 支持 Markdown、Issue 跟踪等基础功能。
缺点:
- 性能一般,适合小型团队。
部署方式:直接运行 JAR 包。
¶自建 Git 服务器(SSH + Git 原生)
特点:完全手动控制,适合极简需求。
步骤:
- 在服务器上安装 Git:
sudo apt install git
- 在服务器上安装 Git:
- 创建裸仓库:
git init --bare /path/to/repo.git
- 通过 SSH 或 HTTPS 访问(需配置 Nginx/Apache)。
优点:无额外依赖,资源占用极低。
缺点:缺乏 Web 界面和高级管理功能。
¶选择建议
- 个人/小团队:优先选 Gitea(轻量)或 GitLab CE(功能全)。
- 企业级需求:考虑 GitLab CE 或 Bitbucket Server(付费支持)。
- 极简主义:直接通过 SSH 搭建原生 Git 服务器。
- 集成 CI/CD:GitLab CE 或 OneDev。
¶部署小贴士
- 数据备份:定期备份仓库目录和数据库(如 GitLab 使用
gitlab-rake gitlab:backup:create
)。 - HTTPS 配置:使用 Let’s Encrypt 免费证书提升安全性。
- 容器化:推荐通过 Docker 或 Kubernetes 部署,便于迁移和扩展。
根据团队规模、技术栈和资源情况选择最适合的方案即可。
¶使用Docke-Compose部署Gitlab CE
由于我们需要平替**Gitee
(码云)**,所以选择 GitLab CE(社区版),它功能全面(支持 CI/CD、项目管理、代码审查等)刚好适合团队。
¶安装Docker及DockerCompose
自行百度安装
¶创建 docker-compose.yml
文件
创建一个目录(如 gitlab-docker
),并在其中新建 docker-compose.yml
文件:
version: '3' |
¶启动 GitLab 服务
在 docker-compose.yml
所在目录执行以下命令:
# 启动容器(后台运行) |
¶访问 GitLab
首次访问:浏览器打开
http://gitlab.example.com
(或你的服务器IP)。初始用户名/密码:
- 用户名:root
- 密码: 从容器中自动生成的随机密码(通过以下命令获取):
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password |
如果没有输出可以去挂载目录下找到initial_root_password
,密码就在文件里
¶配置 HTTPS(可选)
若需启用 HTTPS,修改 docker-compose.yml
:
将
external_url
改为https://gitlab.example.com
。将 SSL 证书文件(
gitlab.example.com.key
和gitlab.example.com.crt
)放入./config/ssl/
目录。重启服务:
docker-compose down && docker-compose up -d
¶备份与恢复
# 手动备份(数据存储在 ./data 目录) |
¶注意事项
资源需求:GitLab 至少需要 4GB 内存,否则可能启动失败(可通过
docker stats
查看资源占用)。SSH 端口冲突:如果宿主机已占用 22 端口,需修改
ports
中的2222:22
并配置 GitLab:# 修改 ./config/gitlab.rb 文件
gitlab_rails['gitlab_shell_ssh_port'] = 2222性能优化:若访问缓慢,可调整
./config/gitlab.rb
中的unicorn['worker_processes']
或增加内存。
¶Gitee
迁移到GitLab
¶通过 Git 镜像迁移
适合需要保留 所有分支、标签和提交历史 的项目。
¶克隆 Gitee 仓库到本地
# 克隆原始仓库 |
¶添加 GitLab 远程仓库
# 在 GitLab 上创建同名空项目(不要初始化 README) |
¶推送所有分支和标签到 GitLab
# 推送所有内容(含分支、标签和提交历史) |
¶备份设置
¶修正docke-compose.yml
配置
version: '3' |
关键修改说明:
- 挂载备份目录:通过
./backups:/var/opt/gitlab/backups
将备份持久化到宿主机。 - 备份保留策略:
backup_keep_time = 604800
表示自动删除7天前的备份。 - 文件权限控制:
0644
确保备份文件可读但不可执行。
¶应用配置并验证
# 重建容器 |
¶编写备份脚本
在gitlab
的docker-compose.yml
同目录下新建backup.sh
文件,文件内容如下:
|
¶定时任务配置
# 编辑当前用户的 cron 任务 |
¶验证与测试
cd /home/gitlab |
¶最终效果
停止服务:
docker-compose stop gitlab
- 备份文件路径:
/home/gitlab/backups/gitlab-20231010.tar.gz
恢复命令示例:
#解压备份文件
tar xzvf backups/gitlab-20231010.tar.gz -C backups/
#解压后文件:1744620347_2025_04_14_17.10.4_gitlab_backup.tar,其中1744620347_2025_04_14_17.10.4就是备份时间戳
docker-compose exec gitlab gitlab-backup restore BACKUP=解压后的备份文件名字时间戳