暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【Docker】搭建Gitlab & Gitlab Runner

hCodeisDawn 2021-09-16
1567
0
背景


为实现企业前后端分离项目的持续集成部署,解决人工编译部署易出错、效率低、无聊重复性等问题,工作之余入门Docker容器化技术并完成基础实战任务,初步熟悉Gitlab CI/CD持续集成部署的工作原理。
在操作生产环境前,需搭建Gitlab私有仓库、注册Gitlab Runner,实现React+SpringBoot示例应用在私库环境下的持续集成部署,以降低生产环境下的集成风险。
本文主要记录Docker搭建Gitlab私有仓库基础知识点,从 前提条件、环境搭建(Gitlab、Gitlab Runner、Gitlab Registry) 等四个小节叙述,一步步完成Gitlab私有仓库搭建,为前后端分离项目的持续集成部署提供必要环境。

1
前提条件
  • Linux基本命令

  • Docker基础命令及数据卷

  • Linux虚拟机 或 云服务器

    hcy@ubuntu:~$ uname -a
    Linux ubuntu 4.15.0-142-generic #146~16.04.1-Ubuntu SMP Tue Apr 13 09:27:15 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
    # 注:linux ip:10.1.88.79
    复制


    2
    Gitlab

    1. Docker下载Gitlab镜像并运行

      docker run -d \
      -p 2080:80 \
      -p 2443:443 \
      -p 2022:22 \
      --name gitlab \
      --restart always \
      --privileged=true \
      -v /home/hcy/Public/docker-volumes/gitlab/conf:/etc/gitlab \
      -v home/hcy/Public/docker-volumes/gitlab/logs:/var/log/gitlab \
      -v home/hcy/Public/docker-volumes/gitlab/data:/var/opt/gitlab \
      gitlab/gitlab-ce:latest


      #-d:后台运行
      #-p:端口映射
      #--name:运行容器命名
      #--restart:重启策略
      #--privileged:root权限扩展
      #-v:数据卷
      #gitlab/gitlab-ce:latest #镜像名:版本信息
      复制


      2. gitlab.yml文件修改

        # 文件路径:${data数据卷}/gitlab-rails/etc/gitlab.yml
        # 绝对路径:/home/hcy/Public/docker-volumes/gitlab/data/gitlab-rails/etc/gitlab.yml


        gitlab:
            host: 10.1.88.79  # 宿主机ip
        port: 80 # gitlab容器默认端口
        https: false
        复制


        访问http://10.1.88.79:2080/进入登录页

        首次登录需设置密码,默认用户名为root


        3. gitlab.rb文件修改

          # 文件路径:${conf数据卷}/gitlab.rb
          # 绝对路径:/home/hcy/Public/docker-volumes/gitlab/conf/gitlab.rb


          # external_url 'GENERATED_EXTERNAL_URL'
          external_url 'http://10.1.88.79:2080'
          复制


          4. Gitlab配置问题

          (1)容器启动后,浏览器访问 http://10.1.88.79:2080/ 报错

          解决:将gitlab.yml文件中gitlab.host属性修改为宿主机ip

          (2)终止gitlab容器,重新执行docker run指令,发现浏览器访问 http://10.1.88.79:2080/ 异常

          解决:打开gitlab.yml文件,发现gitlab容器对外开放端口已不是80,将 -p 2080:80 修改为 -p 2080:2080 重启容器


          3
          Gitlab Runner

          1. Docker下载Gitlab Runner并运行

            docker run -d \
            --name gitlab-runner \
            --restart always \
            -v home/hcy/Public/docker-volumes/gitlab-runner/conf:/etc/gitlab-runner \
            -v var/run/docker.sock:/var/run/docker.sock \
            gitlab/gitlab-runner:latest


            # 注:/var/run/docker.sock 为宿主机安装docker产生的文件,默认该地址
            复制


            2. Gitlab注册全局Runner

              # shell:进入gitlab-runner容器
              docker exec -it gitlab-runner bash


              # shell:注册runner至gitlab
              gitlab-runner register -n \
                --url http://10.1.88.79:2080/ \
              --registration-token QKuDp5zCP_CYZs6SGqUA \
                --tag-list=runner-hcy \
                --description "runner-hcy" \
              --docker-privileged=true \
              --docker-pull-policy="if-not-present" \
              --docker-image "docker:latest" \
              --docker-volumes var/run/docker.sock:/var/run/docker.sock \
              --docker-volumes root/m2:/root/.m2 \
              --executor docker

              # --url http://10.1.88.79:2080/ \   # Gitlab全局Runner url
              # --registration-token QKuDp5zCP_CYZs6SGqUA \  # Gitlab全局Runner token
              # --tag-list=runner-hcy \                      # 标签
              # --description "runner-hcy" \                 # 描述
              # --docker-privileged=true \                   # root权限扩展
              # --docker-pull-policy="if-not-present" \ # 拉取策略
              # --docker-image "docker:latest" \             # docker镜像版本
              # --docker-volumes /var/run/docker.sock:/var/run/docker.sock \  # docker.sock数据卷
              # --docker-volumes /root/m2:/root/.m2 \        # jar数据卷
              # --executor docker                            # 执行器
              复制


              3. 刷新Gitlab全局Runner可见


              4
              Registry

              1. Docker下载Registry并运行

                docker run -d \
                -p 5000:5000 \
                --restart=always \
                -v home/hcy/Public/docker-volumes/registry:/var/lib/registry \
                -e REGISTRY_STORAGE_DELETE_ENABLED=true \
                --name registry \
                registry:2
                复制


                2. gitlab.rb文件修改

                  registry_external_url 'http://10.1.88.79:5000'
                  gitlab_rails['registry_enabled'] = true
                  gitlab_rails['registry_host'] = "10.1.88.79"
                  gitlab_rails['registry_port'] = "5000"
                  gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"
                  gitlab_rails['registry_api_url'] = "http://10.1.88.79:5000"
                  复制


                  3. 更新配置重启服务

                    # 刷新gitlab配置
                    docker exec -it gitlab gitlab-ctl reconfigure
                    # 重启gitlab服务
                    docker restart gitlab
                    复制


                    4. 容器库已配置


                    5
                    结语
                    • 初次部署Gitlab纠结于每项配置,反反复复删除运行容器,令人头大;

                    • Gitlab gitlab.yml、gitlab.rb 文件中配置项极多,还需慢慢研究;

                    • 加深了对Docker命令的理解,逐步精通Docker...单词拼写^_^;

                    文章转载自hCodeisDawn,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论