Debian系统GitLab容器化部署方案(基于Docker)
一、准备工作
1. 安装Docker
Debian系统需先安装Docker作为容器运行环境。执行以下命令:
sudo apt update && sudo apt install -y docker.io
sudo systemctl start docker && sudo systemctl enable docker
验证安装:docker --version(显示Docker版本即成功)。
2. 安装Docker Compose(可选但推荐)
Docker Compose可简化多容器应用的管理。执行以下命令:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
验证安装:docker-compose --version(显示Compose版本即成功)。
二、使用Docker Compose部署GitLab
1. 创建项目目录
创建用于存放GitLab配置、日志和数据的目录:
sudo mkdir -p /opt/gitlab/{config,logs,data}
2. 编写docker-compose.yml文件
在项目目录中创建docker-compose.yml,内容如下(根据需求调整):
version: '3.7'
services:
gitlab:
image: gitlab/gitlab-ce:latest # 使用GitLab社区版最新镜像
container_name: gitlab
restart: always # 开机自启
hostname: 'gitlab.example.com' # 替换为你的域名或IP
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com' # 替换为你的访问URL
gitlab_rails['lfs_enabled'] = true # 启用Git LFS(大文件存储)
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 自定义SSH端口(可选)
ports:
- '80:80' # HTTP访问
- '443:443' # HTTPS访问(需配置SSL)
- '2222:2222' # SSH访问(若修改了端口)
volumes:
- '/opt/gitlab/config:/etc/gitlab' # 配置文件卷
- '/opt/gitlab/logs:/var/log/gitlab' # 日志文件卷
- '/opt/gitlab/data:/var/opt/gitlab' # 数据文件卷(核心数据)
3. 启动GitLab容器
在docker-compose.yml所在目录执行:
sudo docker-compose up -d
该命令会自动下载GitLab镜像(若未下载)并启动容器。
三、访问与初始配置
1. 访问GitLab
打开浏览器,输入http://gitlab.example.com(替换为你的external_url),进入GitLab初始化页面。
2. 设置管理员密码
首次访问时,系统会提示设置root管理员账户的密码(密码长度需≥8位)。设置完成后,使用root账号登录GitLab后台。
3. 验证配置
登录后,检查以下配置是否生效:
- 访问URL是否正确(
external_url); - SSH端口是否可访问(若修改了
gitlab_shell_ssh_port,需通过ssh -p 2222 root@gitlab.example.com测试); - Git LFS是否启用(可在项目设置中查看)。
四、后续配置(可选但推荐)
1. 配置SSL证书(强制HTTPS)
为提升安全性,建议使用Let’s Encrypt免费证书。可通过Certbot工具实现:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d gitlab.example.com # 替换为你的域名
Certbot会自动配置Nginx反向代理并申请证书,完成后GitLab会自动跳转至HTTPS。
2. 配置邮件服务
若需使用GitLab的邮件通知功能(如密码重置、合并请求通知),需编辑/opt/gitlab/config/gitlab.rb文件,添加SMTP配置:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.example.com' # 邮件服务器地址
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = 'your_email@example.com'
gitlab_rails['smtp_password'] = 'your_password'
gitlab_rails['smtp_domain'] = 'example.com'
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
修改后重启GitLab使配置生效:sudo docker-compose restart gitlab。
3. 备份与恢复
GitLab数据存储在/opt/gitlab/data目录中,可通过定期备份该目录实现数据保护。例如,使用rsync命令备份到远程服务器:
rsync -avz /opt/gitlab/data user@backup-server:/path/to/backup/
恢复时,将备份数据复制回/opt/gitlab/data目录,并重启GitLab容器即可。
注意事项
- 资源要求:GitLab对系统资源要求较高,建议分配至少4核CPU、8GB内存(参考GitLab官方文档);
- 端口冲突:若服务器已有服务占用80、443或22端口,需修改
docker-compose.yml中的ports配置,避免冲突; - 数据持久化:确保
volumes配置正确,避免容器删除后数据丢失; - 安全加固:定期更新GitLab镜像(
docker-compose pull)和Docker版本,修复安全漏洞。