温馨提示×

Linux版GitLab的容器化部署方法

小樊
50
2025-11-10 23:23:43
栏目: 智能运维

Linux版GitLab容器化部署指南
GitLab容器化部署通过Docker实现,具备环境隔离、快速部署、易迁移等优势。以下是详细步骤及注意事项:

一、准备工作

  1. 安装Docker
    根据Linux发行版选择安装方式(以Ubuntu为例):

    sudo apt update && sudo apt upgrade -y
    sudo apt install -y curl gnupg lsb-release
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl enable --now docker
    
  2. 安装Docker Compose(可选但推荐)
    Docker Compose简化多容器管理,安装命令:

    sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
  3. 准备数据目录
    创建宿主机目录用于持久化GitLab数据(避免容器删除后数据丢失):

    sudo mkdir -p /srv/gitlab/{config,logs,data}
    sudo chown -R 1000:1000 /srv/gitlab  # GitLab容器内用户UID为1000,需匹配权限
    

二、容器化部署(两种方式)

1. 使用Docker Compose(推荐)

  • 创建docker-compose.yml文件
    /srv/gitlab目录下创建docker-compose.yml,内容如下:

    version: '3.6'
    services:
      gitlab:
        image: gitlab/gitlab-ce:latest  # 生产环境建议替换为具体版本(如16.5.3-ce.0)
        container_name: gitlab
        restart: always
        hostname: 'gitlab.example.com'  # 替换为你的域名或服务器IP
        ports:
          - '8443:443'  # HTTPS端口
          - '8080:80'   # HTTP端口
          - '2222:22'   # SSH端口(避免与宿主机SSH冲突)
        volumes:
          - '/srv/gitlab/config:/etc/gitlab'
          - '/srv/gitlab/logs:/var/log/gitlab'
          - '/srv/gitlab/data:/var/opt/gitlab'
        shm_size: '256m'  # 共享内存,解决数据库性能问题
    
  • 启动容器
    docker-compose.yml所在目录执行:

    cd /srv/gitlab && docker-compose up -d
    

2. 使用Docker命令行(手动部署)

  • 拉取GitLab镜像

    docker pull gitlab/gitlab-ce:latest
    
  • 创建并启动容器

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

三、初始配置

  1. 获取root初始密码
    容器启动后,进入容器查看root用户的初始密码:

    docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
    

    复制输出的密码,用于首次登录。

  2. 访问GitLab Web界面
    浏览器输入http://<服务器IP>:8080(若配置了域名,替换为域名),使用root账号和初始密码登录。

  3. 修改root密码
    登录后,系统强制要求修改root密码(密码需包含大小写字母、数字和特殊字符)。

  4. 配置外部URL(可选但推荐)
    若需使用自定义域名或修改访问端口,编辑GitLab配置文件:

    docker exec -it gitlab vim /etc/gitlab/gitlab.rb
    

    修改以下内容(以http://gitlab.example.com为例):

    external_url 'http://gitlab.example.com'
    gitlab_rails['gitlab_shell_ssh_port'] = 2222  # 与Docker端口映射一致
    

    保存后重载配置:

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

四、常见问题解决

  1. 502 Bad Gateway错误
    通常因端口冲突或GitLab服务未启动导致。检查端口映射是否冲突(如宿主机80端口已被占用),或重启容器:

    docker restart gitlab
    
  2. SSH连接失败
    确保宿主机SSH端口(如2222)已开放,且GitLab配置中的gitlab_shell_ssh_port与端口映射一致。

  3. 数据持久化验证
    删除容器后,重新使用相同docker-compose.ymldocker run命令启动,数据会从宿主机目录恢复。

五、注意事项

  • 生产环境建议:使用gitlab/gitlab-ee(Enterprise Edition)替代gitlab/gitlab-ce(Community Edition),并锁定镜像版本(如gitlab/gitlab-ee:16.5.3-ee.0),避免自动升级导致兼容性问题。
  • 防火墙配置:开放宿主机端口(80、443、2222),允许外部访问。
  • 备份策略:定期备份/srv/gitlab目录(包含配置、日志、数据),可使用tar命令或GitLab自带的备份工具(gitlab-backup create)。

0