温馨提示×

Linux中GitLab的容器化部署方法

小樊
32
2025-12-14 14:16:30
栏目: 智能运维

Linux 上 GitLab 容器化部署实操指南

一 准备与规划

  • 安装基础环境:确保系统已安装并运行 Docker(及可选的 Docker Compose)。完成后可用 docker run hello-world 验证。为获得稳定升级体验,建议固定镜像版本(如 gitlab/gitlab-ce:17.4.5-ce.0 或企业版对应版本),而非 always 使用 latest。
  • 资源与端口规划:GitLab 为重量级应用,推荐至少 4 核 CPU / 4GB 内存(可支撑约 500 用户),更稳妥为 8 核 / 8GB(约 1000 用户)。端口建议:HTTP 80/5480、HTTPS 443/5443、SSH 22/5022(如宿主机 22 被占用,可映射为 5022,并在 GitLab 内同步配置 SSH 端口)。同时规划持久化目录:/etc/gitlab(配置)、/var/log/gitlab(日志)、/var/opt/gitlab(数据)。

二 使用 Docker Compose 部署(推荐)

  • 目录与编排文件:创建持久化目录并编写 docker-compose.yml(示例为社区版,端口与卷可按需调整)。
version: "3.6"
services:
  gitlab:
    image: gitlab/gitlab-ce:17.4.5-ce.0   # 建议固定版本
    container_name: gitlab
    restart: always
    hostname: gitlab.example.com         # 改为你的域名或主机名
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.example.com:5480'   # 与端口映射保持一致
        gitlab_rails['gitlab_shell_ssh_port'] = 5022  # 与宿主机映射一致
    ports:
      - "5480:80"
      - "5443:443"
      - "5022:22"
    volumes:
      - /data/gitlab/config:/etc/gitlab
      - /data/gitlab/logs:/var/log/gitlab
      - /data/gitlab/data:/var/opt/gitlab
    shm_size: "256m"
  • 启动与初始化:
    • 启动:docker-compose up -d
    • 查看日志:docker-compose logs -ft gitlab(首次启动初始化较慢,属正常)
    • 获取初始 root 密码:docker exec -it gitlab grep ‘Password:’ /etc/gitlab/initial_root_password(文件默认 24 小时内有效,请尽快登录并修改)
    • 访问:浏览器打开 http://服务器IP:5480,使用 root 与初始密码登录,按向导完成设置。

三 使用 docker run 快速部署(备选)

  • 拉取镜像:docker pull gitlab/gitlab-ce:17.4.5-ce.0
  • 启动容器(示例映射为 5480/5443/5022):
docker run -d \
  --hostname gitlab.example.com \
  -p 5480:80 -p 5443:443 -p 5022: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:17.4.5-ce.0
  • 初始化与访问:同 Compose 方式,查看日志、获取初始密码、登录 Web 完成设置。

四 关键配置与运维要点

  • 外部 URL 与 SSH 端口:在容器内编辑 /etc/gitlab/gitlab.rb,设置 external_url(如 http://your_ip:5480 或 https://gitlab.example.com),并设置 gitlab_rails[‘gitlab_shell_ssh_port’] = 5022;保存后执行 gitlab-ctl reconfigure 使配置生效。
  • 启用 HTTPS:准备证书后将证书与私钥挂载至容器内(如 /etc/gitlab/ssl),并在 gitlab.rb 中配置 letsencrypt 或手动指定 ssl_certificate/ssl_certificate_key,执行 reconfigure 生效。
  • 邮件通知(SMTP)示例(在 gitlab.rb 中):
    • 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[‘gitlab_email_from’] = “your_email@example.com”
  • 防火墙与端口放行:确保云安全组/本机防火墙放行 80/443/5480/5443(HTTP/HTTPS)与 22/5022(SSH)。如使用 UFW:sudo ufw allow ‘Nginx Full’;如需放行自定义端口,请相应添加规则。
  • 资源与性能:首次启动会进行数据库与资产初始化,耗时较长;可通过 docker logs -ft gitlab 观察进度。生产环境建议为容器设置内存限制(如 --memory),并合理规划 shm_size(默认 256m 可先行,后续按监控调优)。

0