热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

docker+gitlab+gitlab-runner部署详解

这篇文章主要介绍了docker+gitlab+gitlab-runner部署详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

环境

服务端:centos7

客户端:window

在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh连接,开发人员只需提交代码,就可以进行项目文件上传,打包镜像,发布运行测试

一、centos7上安装docker和docker-compose

安装docker:

1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过uname -r命令查看你当前的内核版本

 $ uname -r

2、使用root权限登录 Centos。确保 yum 包更新到最新。

$ sudo yum update

3、卸载旧版本(如果安装过旧版本的话)

$ sudo yum remove docker docker-common docker-selinux docker-engine

4、安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5、设置yum源

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6、可以查看所有仓库中所有docker版本,并选择特定版本安装

$ yum list docker-ce --showduplicates | sort -r

7、安装docker

$ sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0$ sudo yum install  # 例如:sudo yum install docker-ce-17.12.0.ce
如果错误:
问题: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed解决:https://www.cnblogs.com/suanmiaoup/p/12772140.html输入:yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm再输入:yum install docker-ce docker-ce-cli containerd.io

8、启动并加入开机启动

$ sudo systemctl start docker
$ sudo systemctl enable docker

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

$ docker version

10、建议更换docker的镜像源:

1.修改或创建daemon.json文件:vi /etc/docker/daemon.json

将以下配置写入到文件中,保存并退出(不会操作的百度下vi命令吧):

{

  "registry-mirrors": ["http://hub-mirror.c.163.com"]

}

2.重启docker:systemctl restart docker

安装docker-compose:

参考官网:https://docs.docker.com/compose/install/

1、Run this command to download the latest version of Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2、Apply executable permissions to the binary:

sudo chmod +x /usr/local/bin/docker-compose

二、拉取gitlab中文版镜像

地址:https://hub.docker.com/r/twang2218/gitlab-ce-zh

1、利用xshell+xftp在centos7中创建存储日志、配置、数据的文件夹

  文件夹结构如下:

gitlab
  -config
  -logs
  -data
docker-compose.yml

2、利用docker-compose.yml启动

version: '3'
services:
  gitlab:
   image: 'twang2218/gitlab-ce-zh:11.1.4'
   restart: unless-stopped
   hostname: 'gitlab.domain.com'
   container_name: gitlab
   environment:
    TZ: 'Asia/Shanghai'
    GITLAB_OMNIBUS_CONFIG: |
     external_url 'http://gitlab.domain.com/'
     registry_external_url 'https://gitlab.domain.com'
     gitlab_rails['gitlab_shell_ssh_port'] = 1022
     gitlab_rails['time_zone'] = 'Asia/Shanghai'
     # gitlab_rails['smtp_enable'] = true
     # gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
     # gitlab_rails['smtp_port'] = 465
     # gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
     # gitlab_rails['smtp_password'] = "password"
     # gitlab_rails['smtp_authentication'] = "login"
     # gitlab_rails['smtp_enable_starttls_auto'] = true
     # gitlab_rails['smtp_tls'] = true
     # gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
   ports:
    - '80:80'
    - '443:443'
    - '1022:22'
   volumes:
    - ./data:/var/opt/gitlab
    - ./config:/etc/gitlab
    - ./logs:/var/log/gitlab

如果你的服务器有域名,将上面的gitlab.domain.com替换为实际域名。

实验时,也可以直接修改/etc/hosts方便测试。比如:127.0.0.1 gitlab.example.com

3、cd到gitlab目录下执行docker-compose up -d启动,稍作等待。。

4、启动完毕后打开浏览器访问gitlab.domain.com

5、SSH 连接GitLab

首先我们需要得到一个SSH Key,输入

cat ~/.ssh/id_rsa.pub

如果出现 ssh-rsa打头的字符,说明本地已经有了SSH Key那我们可以直接拿来用,如果没有则需要我们自己创建一个SSH Key。

6、创建SSH Key

输入以下命令创建一个SSH Key。

ssh-keygen -t rsa -C "your.email@example.com" -b 4096

完成之后可以再输入 上面的cat命令 或者pbcopy直接复制生成的ssh key。

pbcopy <~/.ssh/id_rsa.pub

在GitLab中账号-》设置中找到 SSH Keys中添加这个Key即可。

7、SSH 连接 1022 端口

正常情况下你已经可以通过git命令来连接我们部署的gitlab,但这里不一样的是我们把容器的 22端口映射到了 host的 1022上,我们需要指定端口来进连接。

ssh -p 1022 git@gitlab.domain.com

同时还需要更改GitLab的配置文件中的 ssh端口(如果上面配置过就不用了),否则GitLab中为我们生成的项目连接地址会连接不上。/gitlab/config/gitlab.rb

gitlab_rails['gitlab_shell_ssh_port'] = 1022

更改完ssh端口之后重启gitlab容器,之后我们的项目 ssh连接址会变为:

ssh://git@gitlab.domain.com:1022/test/projectname.git

到这里我们已经完成了GitLab的部署。

三、拉取gitlab-runner镜像

地址:https://hub.docker.com/r/gitlab/gitlab-runner

1、利用xshell+xftp在centos7中创建存储日志、配置、数据的文件夹

  文件夹结构如下:

gitlab-runner
  -config
docker-compose.yml

2、利用docker-compose.yml启动

version: '3'
services:
  runner:
   image: 'gitlab/gitlab-runner:v11.4.2'
   container_name: gitlab-runner
   restart: always
   networks:
    - gitlab_default
   volumes:
    - ./config:/etc/gitlab-runner
    - /var/run/docker.sock:/var/run/docker.sock
networks:
 gitlab_default:
  external: true

其中gitlab_default为上面gitlab的网络

注意:gitlab-runner的版本要和gitlab尽量对应不然会出现连不上gitlab

3、cd到gitlab目录下执行docker-compose up -d启动

四、配置gitlab-runner连上gitlab

1、注册gitlab-runner

docker exec -it gitlab-runner gitlab-runner register

2. 我们会输入 http://gitlab.domain.com或http://ip:port 也就是我们安装在本地的GitLab

3. Please enter the gitlab-ci token for this runner 要求输入 gitlab-ci token

在项目的 管理区域->runners中可以找到(这里注册的是share类型runner)

4. 输入描述,如:test

5. 输入tag(留空也可以,之后可以进行编辑 )

6. 选择当遇到没有打标签的提交时是否会执行,我们选 true

7. 是否锁定此runner 到当前项目, 我们选 false

8. 选一个执行者 executor

这一步比较重要 (ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell)

我们选docker

9. 选择默认使用的镜像: docker:stable

在注册完之后,我们可以在GitLab获取gitlab-ci token 的页面看到我们刚刚注册的这个 runner

同时可以在gitlab-runner/config下可以看到生成一个config.toml的文件,文件内容如下:

cOncurrent= 1
check_interval = 0

[[runners]]
 name = "test"
 url = "http://192.168.1.157/"
 token = "69c0ff735a76c0bb3cce977a361661"#这个token是gitlab-runner根据第三步骤的token生成的
 executor = "docker"
 [runners.docker]
  extra_hosts = ["gitlab.domain.com:192.168.1.157"] #如果在执行上面步骤中碰到连接不上gitlab,是因为gitlab-runner在docker内部解析不了gitlab.domain.com,通过添加配置这个可以解决问题
  tls_verify = false
  image = "docker:stable" #这里之所以这样是因为基于这个镜像它包含了docker等工具,可以在gitlab-runner执行的.gitlab-ci.yml中有docker指令时而无需再安装docker 参考地址:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
  privileged = false #使用docker-in-docker时通常为true
  disable_cache = false
  volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
  shm_size = 0
  [runners.cache]

或者直接先配置好,gitlab-runner运行时会自动加载该配置文件

参考地址:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html

五、提交项目代码完成CI/CD

1、在项目根目录下添加.gitlab-ci.yml,提交项目代码后会自动运行该文件打包项目

image: docker:stable

image:
 name: docker/compose:1.23.2 # update tag to whatever version you want to use. 这个是因为我下面脚本用到docker-compose
 entrypoint: ["/bin/sh", "-c"]

before_script:
 - docker version
 - docker-compose version
 
build:
 script: #下面脚本根据自己情况写
  - COMPOSE_HTTP_TIMEOUT=200 docker-compose -f docker-compose-efk.yml up -d  #这是因为我的项目已经用docker-compose编排好了
  - COMPOSE_HTTP_TIMEOUT=200 docker-compose up -d --build --force-recreate

2、在win10上通过git提交代码

cd到项目根目录,如果有安装git的话可以直接在根目录下打开git bash 执行,如果没有安装打开powershell也行

git init #如果还没有初始化
git add . #把项目都添加进去
git commit -m "init" 提交到git
git remote add origin git@gitlab.domain.com:1022/root/test.git #注意端口为1022 这个是上面运行gitlab是指定的,执行一次就行了
git push -u origin master #推送到服务器gitlab上

到此这篇关于docker+gitlab+gitlab-runner部署详解的文章就介绍到这了,更多相关docker gitlab gitlab-runner部署内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • Netty源代码分析服务器端启动ServerBootstrap初始化
    本文主要分析了Netty源代码中服务器端启动的过程,包括ServerBootstrap的初始化和相关参数的设置。通过分析NioEventLoopGroup、NioServerSocketChannel、ChannelOption.SO_BACKLOG等关键组件和选项的作用,深入理解Netty服务器端的启动过程。同时,还介绍了LoggingHandler的作用和使用方法,帮助读者更好地理解Netty源代码。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
作小die_syj
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有