温馨提示×

Linux环境下GitLab的容器化部署方案

小樊
32
2025-12-30 06:35:59
栏目: 智能运维

Linux环境下GitLab容器化部署方案

一 环境准备与资源建议

  • 操作系统与软件:建议使用 Ubuntu 20.04+CentOS 7+,安装 Docker 20.10+Docker Compose 2.0+
  • 硬件基线:至少 2 核 CPU、4 GB 内存、20 GB 磁盘空间(生产环境建议更高规格)。
  • 网络与端口:开放或映射 80/443/22(HTTP/HTTPS/SSH),如使用云服务器需同步配置安全组规则。
  • 时间同步:挂载宿主机时间或设置时区,避免证书与定时任务异常。
  • 资源检查与安装示例:
    • 检查环境:docker --version && docker-compose --version
    • 快速安装 Docker(示例):curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh && sudo usermod -aG docker $USER
    • 以上准备可显著提升首次启动成功率与后续维护效率。

二 部署方式一 Docker Compose 推荐

  • 目录与持久化:创建持久化目录并赋予合适权限(示例:/data/gitlab/{config,logs,data}),用于保存配置、日志与业务数据,避免容器重建导致数据丢失。
  • 编排文件要点(示例):
    • 版本与服务:使用 version: ‘3.6’,服务名 gitlab,镜像 gitlab/gitlab-ce:latest
    • 端口映射:为避免与宿主机 SSH 冲突,常用自定义端口,如 5480:80、5443:443、5022:22
    • 数据卷:挂载 /etc/gitlab:/etc/gitlab、/var/log/gitlab:/var/log/gitlab、/var/opt/gitlab:/var/opt/gitlab;可挂载 /etc/localtime:/etc/localtime:ro 同步时区。
    • 资源与稳定性:设置 restart: always;建议设置 shm_size: ‘256m’ 提升稳定性。
  • 启动与初始化:
    • 启动:docker-compose up -d
    • 查看日志:docker-compose logs -f gitlab
    • 初始 root 密码:在容器内查看 /etc/gitlab/initial_root_password(默认 24 小时 有效),随后登录 Web 强制修改密码。
  • 防火墙放行(firewalld 示例):firewall-cmd --add-port={80,443,22}/tcp --permanent && firewall-cmd --reload
  • 该方式便于多容器编排、统一配置与后续扩展。

三 部署方式二 Docker Run 单容器

  • 基本命令模板(按需替换端口与目录):
    • docker run -d --name gitlab --hostname gitlab.example.com --restart always \ -p 8443:443 -p 8080:80 -p 2222:22 \ -v /path/to/config:/etc/gitlab -v /path/to/logs:/var/log/gitlab -v /path/to/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest
  • 首次访问与初始化:浏览器访问 http://服务器IP:8080,设置 root 初始密码;如需使用域名与标准端口,请调整端口映射与后续配置。
  • 适用场景:快速验证、轻量试用或受限环境下单实例部署。

四 关键配置与运维要点

  • 外部访问地址:在容器内编辑 /etc/gitlab/gitlab.rb,设置 external_url 'http://your-domain-or-ip:port'(如启用 HTTPS 则使用 https),保存后执行 gitlab-ctl reconfigure 使配置生效。
  • SSH 端口同步:若宿主机 SSH 非 22(如映射为 5022),需在 gitlab.rb 中设置 gitlab_rails['gitlab_shell_ssh_port'] = 5022,并同步更新仓库克隆地址中的 SSH 端口。
  • 时区设置:在 gitlab.rb 中设置 gitlab_rails['time_zone'] = 'Asia/Shanghai',保持界面与任务时间一致。
  • HTTPS 启用:
    • 手动证书:将证书与私钥挂载至容器内(如 /etc/gitlab/ssl),并在 gitlab.rb 中启用 letsencrypt['enabled'] = true 或配置 nginx['ssl_certificate']/nginx['ssl_certificate_key'],随后 gitlab-ctl reconfigure
    • 自签名证书:用于测试环境,注意客户端需信任自签名根证书。
  • 邮件通知(SMTP):在 gitlab.rb 中配置 smtp_* 系列参数(如 smtp_enable、smtp_address、smtp_port、smtp_user_name、smtp_password、smtp_domain、smtp_starttls),完成后 gitlab-ctl reconfigure 并测试发送。
  • 备份与恢复:
    • 备份:docker-compose exec gitlab gitlab-rake gitlab:backup:create(默认备份至 /var/opt/gitlab/backups,可在 gitlab.rb 中调整 gitlab_rails['backup_path'])。
    • 恢复:先停止相关服务(如 sidekiqunicorn/puma),执行 docker-compose exec gitlab gitlab-rake gitlab:backup:restore BACKUP=备份文件名前缀,再重启服务。
  • 监控与日志:结合容器日志 docker-compose logs -f gitlab 与 GitLab 内置监控、日志收集,关注 CPU/内存/磁盘 使用与慢请求。
  • 以上配置项与流程可显著提升可用性与可维护性,生产环境建议启用 HTTPS 与定时备份策略。

0