温馨提示×

Debian GitLab的容器化部署方案

小樊
38
2025-11-09 15:09:51
栏目: 智能运维

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版本,修复安全漏洞。

0