温馨提示×

GitLab的容器化部署方法是什么

小樊
41
2025-11-22 22:15:43
栏目: 编程语言

GitLab容器化部署方法

一 准备与规划

  • 安装运行环境:在目标 Linux 主机安装 Docker(及可选的 Docker Compose),并确认服务已启动与开机自启。
  • 规划目录与端口:创建持久化目录(如 /data/gitlab/{config,logs,data}),规划访问端口(HTTP/HTTPS/SSH)。注意主机上已有服务占用 80/443/22 时,需改为未占用端口(如 5480/5443/5022)。
  • 域名与证书:准备可解析的域名与 TLS/SSL 证书(自签或正式证书),便于启用 HTTPS
  • 资源建议:为容器分配充足内存与 CPU,生产环境建议设置 shm_size(如 256MB)以避免性能问题。

二 部署方式

  • 方式一 Docker Compose(推荐)
    • 目录与编排文件:
      mkdir -p /data/gitlab/{config,logs,data}
      cat > /data/gitlab/docker-compose.yml <<'EOF'
      version: '3.6'
      services:
        gitlab:
          image: gitlab/gitlab-ce:latest
          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'
      EOF
      
    • 启动与查看日志:
      cd /data/gitlab
      docker-compose up -d
      docker-compose logs -f
      
  • 方式二 docker run
    docker run -d \
      --hostname gitlab.example.com \
      --publish 5480:80 --publish 5443:443 --publish 5022:22 \
      --name gitlab \
      --restart always \
      --volume /data/gitlab/config:/etc/gitlab \
      --volume /data/gitlab/logs:/var/log/gitlab \
      --volume /data/gitlab/data:/var/opt/gitlab \
      --shm-size 256m \
      gitlab/gitlab-ce:latest
    
  • 初始化访问:浏览器访问 http://服务器IP:5480(或域名),首次进入设置 root 用户密码。

三 关键配置

  • 外部访问地址:在容器内编辑 /etc/gitlab/gitlab.rb,设置 external_url(如 http://gitlab.example.com:5480https://…),保存后执行 gitlab-ctl reconfigure 使配置生效。
  • SSH 端口同步:若宿主机 SSH 端口映射为 5022,需在 gitlab.rb 中设置 gitlab_rails[‘gitlab_shell_ssh_port’] = 5022,并同步到客户端克隆地址。
  • 时区与头像等:可按需设置 gitlab_rails[‘time_zone’]、头像与邮件等参数。
  • 获取初始密码:首次启动后 24 小时 内可在容器内查看 /etc/gitlab/initial_root_password,并尽快登录修改。

四 安全与运维

  • 防火墙与端口:开放 HTTP/HTTPS/SSH 对应端口(如 5480/5443/5022),避免使用已被占用的 80/443/22 冲突。
  • 启用 HTTPS:放置证书后,将 external_url 改为 https:// 并重启服务;或按需配置反向代理与证书自动续期。
  • 备份与恢复:定期备份 /data/gitlab 目录(包含配置、日志、数据),熟悉基于备份的灾难恢复流程。
  • 监控与资源:监控 CPU/内存/磁盘 IO,必要时为容器设置资源限制;按需调整 shm_size 与数据库/缓存相关参数。

五 常见问题与排错

  • 端口冲突:若主机 80/443/22 被占用,改用 5480/5443/5022 一类未占用端口,并同步到 external_url 与客户端。
  • 配置不生效:修改 /etc/gitlab/gitlab.rb 后必须执行 gitlab-ctl reconfigure;部分页面参数可能需重启相关服务。
  • 容器无法启动:查看日志 docker-compose logs -fdocker logs gitlab,检查卷挂载权限与目录存在性。
  • 初始密码过期:若 /etc/gitlab/initial_root_password 不可用,直接在 Web 首次登录设置 root 密码。

0