docker+gitlab+gitlab-runner部署详解

论坛 期权论坛 脚本     
niminba   2021-5-23 04:24   3815   0

环境

服务端: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 <FQPN> # 例如: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['timeXt-align: center">

同时可以在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部署内容请搜索社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持社区!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP