Docker 配置 Gitlab 仓库及 CI/CD

改进了一版,可以看详细的教程:基于 Docker 的 CI/CD

Gitlab

整理自官方文档,Docker 配置 Gitlab

先觉条件

首先需要安装 Docker,官方安装文档

设置卷的位置

此处可以设置环境变量,也可以在配置文件中直接填写对应的地址。

# linux
$  export GITLAB_HOME=/srv/gitlab

# Mac
$ export GITLAB_HOME=$HOME/gitlab

设置环境变量 $GITLAB_HOME ,该变量指向配置,日志和数据文件将驻留的目录。GitLab容器使用主机安装的卷来存储持久数据。

本地路径容器路径用法
$GITLAB_HOME/data/var/opt/gitlab用于存储应用程序数据。
$GITLAB_HOME/logs/var/log/gitlab用于存储日志。
$GITLAB_HOME/config/etc/gitlab用于存储GitLab配置文件。
使用 Docker Compose 安装 GitLab
  1. 安装 Docker Compose

  2. 创建一个 docker-compose.yml 文件,这里 gitlab-ce 是个人版,ee 是企业版。

    gitlab:
      image: 'gitlab/gitlab-ce:latest'
      restart: always
      hostname: 'gitlab.wenjw.cn'
      environment:
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://gitlab.wenjw.cn/'
          gitlab_rails['gitlab_shell_ssh_port']=2222
      ports:
        - '8003:80'
        - '2222:22'
      volumes:
        - '/home/wjw/www/srv/gitlab/config:/etc/gitlab'
        - '/home/wjw/www/srv/gitlab/logs:/var/log/gitlab'
        - '/home/wjw/www/srv/gitlab/data:/var/opt/gitlab'
    
  3. 确保您与以下目录位于同一目录中,docker-compose.yml 然后启动GitLab。使用 -p 自定义服务名,使用目录名为默认服务名可能会出冲突。

    $ docker-compose -p gitlab-ee up -d
    
  4. 启动后查看 docker 容器里的日志,启动成功后就可以访问了。第一次访问需要设置密码,账户名默认为 root。
    在这里插入图片描述

  5. 配置 ssh ,测试连通性

    在这里插入图片描述

  6. 我们自己的服务器如果不希望用户注册,那可以配置不开通注册功能,只能通过管理员添加。

    在这里插入图片描述

Nginx 配置

现在我们的 gitlab 只能通过 IP 访问,这里我们通过配置 nginx 和域名的解析来实现子域名访问,例如 gitlab.wenjw.cn。

  1. 首先在阿里云配置域名解析,如下是我的域名解析配置。
    在这里插入图片描述

  2. 然后在服务器配置 nginx,访问对应域名的时候指向对应的服务。这里我们在 nginx_serve 目录下创建两个文件:nginx.confdocker-compose.yml

    docker-compose.yml:

    version: "3.5"
    services:
      nginx_serve:
        image: nginx
        ports:
          - 80:80
        container_name: "nginx_serve"
        restart: unless-stopped
        volumes:
          - ./nginx.conf:/etc/nginx/conf.d/default.conf
    

    nginx.conf:

    # gitlab-ce
    server {
      listen 80;
    
      server_name gitlab.wenjw.com gitlab.wenjw.cn;
    
      location / {
        proxy_pass http://xx.xx.xx.xxx:8003;
      }
    }
    
  3. 然后启动 nginx 服务。

    $ sudo docker-compose -p nginx_serve up -d
    
  4. 现在我们可以在子域名访问到我们的 gitlab 服务了。

    在这里插入图片描述

gitlab-runner

接下来配置 gitlab-runner 用来支持 CI/CD。

  1. 首先创建 docker-compose.yml 文件。

    version: "3"
    services:
     app:
       image: gitlab/gitlab-runner
       container_name: gitlab-runner-docker
       restart: always
       volumes:
         - ./config:/etc/gitlab-runner
         - /home/wjw/www/srv/gitlab-runner/docker.sock:/var/run/docker.sock
    
  2. 启动 docker 容器。

    $ sudo docker-compose -p gitlab-runner up -d
    
  3. 查看 runner 信息。

    在这里插入图片描述

  4. 进入容器内进行注册。

    $ sudo docker exec -it [Container ID] gitlab-ci-multi-runner register
    
  5. 注册流程,按提示输入内容。

    在这里插入图片描述

  6. 刷新刚才查看信息的页面后,可以看到我们刚才注册的 runner。

    在这里插入图片描述

  7. 接下来在项目中配置 .gitlab-ci.yml 文件,用来测试我们的 ci 流程。配置参数可以看我以前写的一篇博客,gitlab 配置作业

    # .gitlab-ci.yml
    
    stages:
      - deploy
      - rollback
    
    # dev
    deploy_develop:
      stage: deploy
      only:
        - develop
      tags:
        - blog
      script:
        - echo $HOME
    
    
    # 部署 production 环境
    deploy_production:
      stage: deploy
      only:
        - master
      tags:
        - blog
      script:
        - echo $HOME
      when: manual
    
    
    # 线上回滚
    deploy_production_rollback:
      stage: rollback 
      only:
        - master
      tags:
        - social-h5
      script:
        - echo $HOME
      when: manual
    

    提交后就可以看到我们的 ci 流程。

    在这里插入图片描述
    点击部署以后,就可以看到我们配置的脚本的执行日志。现在流程已经全部打通,接下来只需要自定义文件中的 script 字段就可以实现完整的自动化部署流程。
    在这里插入图片描述

常见错误

  1. ssh 已经配置好,但还是需要输入密码?
    ssh 的默认端口是 22,如果做了其他端口的映射,需要配置 GITLAB_OMNIBUS_CONFIG(或 gitlab.rb) 下的 gitlab_rails['gitlab_shell_ssh_port']=2222
  2. 容器启动失败?
    失败的原因有好多,关注以下步骤是否出错。1、首先查看 gitlab volumes 设置的目录,确保当前用户有操作他的权限。2、df -i 查看系统的内存使用情况,如果运行内存满了的话也不能成功启动。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值