首页主机资讯GitLab在Linux上的容器化应用实践

GitLab在Linux上的容器化应用实践

时间2026-01-21 21:09:10发布访客分类主机资讯浏览1471
导读:Linux 上容器化部署 GitLab 的完整实践 一 环境与资源准备 操作系统与软件:建议使用 Ubuntu 20.04+/CentOS 7+,安装 Docker 20.10+ 与 Docker Compose 2.0+。可用官方脚本快...

Linux 上容器化部署 GitLab 的完整实践

一 环境与资源准备

  • 操作系统与软件:建议使用 Ubuntu 20.04+/CentOS 7+,安装 Docker 20.10+Docker Compose 2.0+。可用官方脚本快速安装 Docker:curl -fsSL https://get.docker.com -o get-docker.sh & & sudo sh get-docker.sh,并将当前用户加入 docker 组:sudo usermod -aG docker $USER。资源方面建议至少 2 核 CPU、4GB 内存、20GB 磁盘,生产环境可适当提升。开放防火墙端口 80/443/22(或自定义映射端口)。

二 快速部署方案

  • 方案一 Docker Run(适合快速试用)

    1. 创建持久化目录:mkdir -p /srv/gitlab/{ config,data,logs}
    2. 启动容器(示例将 SSH 映射到 2222 以避免与宿主机 SSH 冲突):
      docker run -d \
        --hostname 192.168.1.10 \
        --publish 443:443 --publish 80:80 --publish 2222:22 \
        --name gitlab \
        --restart always \
        --volume /srv/gitlab/config:/etc/gitlab \
        --volume /srv/gitlab/logs:/var/log/gitlab \
        --volume /srv/gitlab/data:/var/opt/gitlab \
        gitlab/gitlab-ce:latest
      
    3. 首次访问:浏览器打开 http://服务器IP,设置 root 管理员密码。
    4. 查看初始 root 密码:docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
    5. 如自定义 SSH 端口,需同步配置:gitlab_rails['gitlab_shell_ssh_port'] = 2222,然后执行 docker exec -it gitlab gitlab-ctl reconfigure 生效。
  • 方案二 Docker Compose(更易维护)

    1. 示例 docker-compose.yml(HTTP 8080、HTTPS 8443、SSH 2222):
      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:8080'
              gitlab_rails['gitlab_shell_ssh_port'] = 2222
          ports:
            - "8080:80"
            - "8443:443"
            - "2222:22"
          volumes:
            - ./config:/etc/gitlab
            - ./logs:/var/log/gitlab
            - ./data:/var/opt/gitlab
      
    2. 启动:docker-compose up -d,查看日志:docker-compose logs -f gitlab
    3. 如需 HTTPS,放置证书至 ./data/certs/gitlab.crtgitlab.key,并在 GITLAB_OMNIBUS_CONFIG 中设置 external_url 'https://gitlab.example.com:8443' 与 Nginx SSL 证书路径,然后 reconfigure 生效。

三 关键配置与运维要点

  • 持久化与目录映射:将宿主机的 /srv/gitlab/{ config,data,logs} 分别映射到容器内 /etc/gitlab、/var/opt/gitlab、/var/log/gitlab,确保配置、仓库与日志不随容器销毁而丢失。
  • 端口与 external_url 一致性:当自定义 HTTP/SSH 端口时,务必保证 external_url 中的端口与 -p 映射一致,并在 gitlab.rb 中设置 gitlab_rails['gitlab_shell_ssh_port'] 为映射后的 SSH 端口,然后执行 gitlab-ctl reconfigure 使配置生效。
  • 首次登录与初始密码:默认管理员为 root,初始密码可通过容器文件 /etc/gitlab/initial_root_password 获取(首次设置后建议妥善保管)。
  • 备份与恢复:
    • 备份:docker exec -it gitlab gitlab-backup create(备份文件位于 /var/opt/gitlab/backups,若已挂载则位于宿主机映射目录)。
    • 恢复:先 docker exec -it gitlab gitlab-ctl stop,再执行 docker exec -it gitlab gitlab-backup restore BACKUP=备份文件名前缀,随后 gitlab-ctl start 并检查日志。
  • 升级策略:采用“停容器—拉新镜像—按原参数重建容器”的方式升级,避免直接覆盖运行中的实例;生产环境建议固定镜像版本号而非使用 latest

四 CI/CD 与 Runner 容器化

  • 部署 Runner:
    docker run -d --name gitlab-runner --restart always \
      -v /srv/gitlab-runner/config:/etc/gitlab-runner \
      gitlab/gitlab-runner:latest
    
  • 注册 Runner:进入容器执行 docker exec -it gitlab-runner gitlab-runner register,按提示输入 GitLab 实例 URL注册令牌,选择 executor(如 shell/docker)。
  • 示例 .gitlab-ci.yml(构建并运行应用):
    stages:
      - build
      - deploy
    
    variables:
      DOCKER_IMAGE: myapp:latest
    
    build:
      stage: build
      script:
        - docker build -t $DOCKER_IMAGE .
        - docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY
    
    deploy:
      stage: deploy
      script:
        - docker pull $DOCKER_IMAGE
        - docker run -d --name myapp -p 80:80 $DOCKER_IMAGE
    
  • 在项目中配置 CI_REGISTRY、CI_REGISTRY_USER、CI_JOB_TOKEN 等变量后,推送代码即可触发流水线。

五 常见问题与排查

  • 端口冲突:若宿主机 22 已被占用,将容器 22 映射到 2222/10022 等自定义端口,并在 gitlab.rb 中设置 gitlab_rails['gitlab_shell_ssh_port'] 为相同端口,同时 external_url-p 保持一致。
  • 配置未生效:修改 /etc/gitlab/gitlab.rb 后必须执行 gitlab-ctl reconfigure;必要时 gitlab-ctl restart 使服务重载。
  • 无法访问:核对云防火墙/本机防火墙与云安全组已放行 80/443/22(或自定义端口);使用 docker psdocker logs -f gitlab 排查容器状态与启动日志。
  • 备份恢复失败:确认备份文件位于容器 /var/opt/gitlab/backups 或正确挂载目录,文件名前缀与 BACKUP= 参数一致,恢复前停止相关服务以避免数据一致性问题。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: GitLab在Linux上的容器化应用实践
本文地址: https://pptw.com/jishu/789099.html
如何用FetchLinux加速文件传输 Linux GitLab的使用教程及技巧

游客 回复需填写必要信息