温馨提示×

centos gitlab容器化部署实践

小樊
58
2025-09-17 18:39:17
栏目: 智能运维

CentOS GitLab容器化部署实践指南

一、前提条件

  • 操作系统:CentOS 7或更高版本(建议使用CentOS Stream或RHEL衍生版本以保证兼容性);
  • Docker环境:需提前安装并启动Docker服务(版本≥20.10);
  • Docker Compose(可选但推荐):用于简化多容器管理(版本≥1.29.2)。

二、基础部署步骤

1. 安装Docker与Docker Compose

  • 安装Docker
    执行以下命令添加Docker官方仓库并安装:
    sudo yum update -y
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker && sudo systemctl enable docker
    
  • 安装Docker Compose(可选):
    下载官方二进制文件并赋予执行权限:
    sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    

2. 拉取GitLab镜像

从Docker Hub获取最新稳定版的GitLab Community Edition(CE)镜像:

docker pull gitlab/gitlab-ce:latest

3. 创建数据存储目录

为保证数据持久化,需在宿主机创建专用目录用于挂载GitLab的配置、日志和数据:

mkdir -p /data/gitlab/{config,logs,data}

4. 启动GitLab容器

使用docker run命令启动容器,关键参数说明:

  • --hostname:设置容器的主机名(需与后续配置的external_url一致);
  • -p:映射宿主机端口到容器端口(HTTP:80、HTTPS:443、SSH:22);
  • --restart always:容器退出时自动重启;
  • -v:挂载数据卷(配置→/etc/gitlab、日志→/var/log/gitlab、数据→/var/opt/gitlab)。

完整命令示例:

docker run -d \
  --hostname gitlab.example.com \
  -p 80:80 -p 443:443 -p 22:22 \
  --name gitlab \
  --restart always \
  -v /data/gitlab/config:/etc/gitlab \
  -v /data/gitlab/logs:/var/log/gitlab \
  -v /data/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

5. 访问GitLab实例

容器启动后,等待初始化完成(约5-10分钟),通过浏览器访问http://<服务器IP>,首次登录需设置root用户密码(默认密码可通过cat /data/gitlab/config/initial_root_password查看,若未生成则等待初始化完成)。

三、高级配置优化

1. 配置外部URL与HTTPS

  • 修改external_url
    编辑容器内的/etc/gitlab/gitlab.rb文件(通过docker exec -it gitlab /bin/bash进入),设置外部访问URL:
    external_url 'http://gitlab.example.com'
    
    若需启用HTTPS,可使用Let’s Encrypt免费证书,修改为:
    external_url 'https://gitlab.example.com'
    
    然后重启GitLab使配置生效:
    docker exec -it gitlab gitlab-ctl reconfigure && docker exec -it gitlab gitlab-ctl restart
    

2. 配置邮件服务(用于通知)

gitlab.rb中添加SMTP配置(以Gmail为例):

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your_email@gmail.com"
gitlab_rails['smtp_password'] = "your_app_password"  # 需使用应用专用密码
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = "your_email@gmail.com"

保存后重启GitLab:

docker exec -it gitlab gitlab-ctl reconfigure && docker exec -it gitlab gitlab-ctl restart

3. 配置GitLab Runner(容器化)

若需实现CI/CD,可部署GitLab Runner容器:

  • 拉取Runner镜像
    docker pull gitlab/gitlab-runner:latest
    
  • 注册Runner
    运行容器并进入交互模式,执行注册命令(需替换<GITLAB_URL><TOKEN>):
    docker run -it --rm gitlab/gitlab-runner register
    
    输入GitLab实例URL和注册令牌(可在GitLab项目→Settings→CI/CD→Runners中获取),选择执行器(推荐docker),最后启动Runner:
    docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest
    

4. 性能调优

  • 资源分配:根据服务器配置调整Docker容器的资源限制(如内存、CPU),避免因资源不足导致GitLab卡顿;
  • 端口调整:若宿主机22端口被占用,可将SSH端口映射到其他端口(如-p 2222:22),并在gitlab.rb中同步修改gitlab_shell_ssh_port

四、注意事项

  • 数据持久化:务必挂载configlogsdata目录到宿主机,避免容器删除后数据丢失;
  • 安全性
    • 启用HTTPS(推荐Let’s Encrypt);
    • 禁用root用户SSH登录(修改/etc/ssh/sshd_config中的PermitRootLogin no);
    • 定期更新GitLab镜像(docker pull gitlab/gitlab-ce:latest);
  • 防火墙配置:开放必要端口(80、443、22或自定义端口),使用firewall-cmd命令:
    sudo firewall-cmd --permanent --add-port=80/tcp
    sudo firewall-cmd --permanent --add-port=443/tcp
    sudo firewall-cmd --permanent --add-port=22/tcp
    sudo firewall-cmd --reload
    
  • 备份策略:定期执行备份(docker exec gitlab gitlab-rake gitlab:backup:create),备份文件默认存储在/var/opt/gitlab/backups目录(需挂载到宿主机)。

0