小知识:docker+gitlab+gitlab-runner部署详解

环境

服务端:centos7

客户端:window

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

一、centos7上安装dockerdocker-compose

安装docker:

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

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

?
1
$ uname -r

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

?
1
$ sudo yum update

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

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

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

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

5、设置yum源

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

%小知识:docker+gitlab+gitlab-runner部署详解-猿站网-插图

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

?
1
$ yum list docker-ce –showduplicates | sort -r

%小知识:docker+gitlab+gitlab-runner部署详解-1猿站网-插图

7、安装docker

?
1
2
3
$ 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

%小知识:docker+gitlab+gitlab-runner部署详解-2猿站网-插图

8、启动并加入开机启动

?
1
2
$ sudo systemctl start docker
$ sudo systemctl enable docker

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

?
1
$ docker version

%小知识:docker+gitlab+gitlab-runner部署详解-3猿站网-插图

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

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

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

?
1
2
3
4
5
{
“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:

?
1
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:

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

二、拉取gitlab中文版镜像

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

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

  文件夹结构如下:

?
1
2
3
4
5
gitlab
-config
-logs
-data
docker-compose.yml

2、利用docker-compose.yml启动

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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

%小知识:docker+gitlab+gitlab-runner部署详解-4猿站网-插图

5、SSH 连接GitLab

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

?
1
cat ~/.ssh/id_rsa.pub

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

%小知识:docker+gitlab+gitlab-runner部署详解-5猿站网-插图

6、创建SSH Key

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

?
1
ssh-keygen -t rsa -C “your.email@example.com” -b 4096

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

?
1
pbcopy < ~/.ssh/id_rsa.pub

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

%小知识:docker+gitlab+gitlab-runner部署详解-6猿站网-插图

7、SSH 连接 1022 端口

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

?
1
ssh -p 1022 git@gitlab.domain.com

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

?
1
gitlab_rails[gitlab_shell_ssh_port] = 1022

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

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

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

三、拉取gitlab-runner镜像

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

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

  文件夹结构如下:

?
1
2
3
gitlab-runner
-config
docker-compose.yml

2、利用docker-compose.yml启动

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

?
1
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)

%小知识:docker+gitlab+gitlab-runner部署详解-7猿站网-插图

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

%小知识:docker+gitlab+gitlab-runner部署详解-8猿站网-插图

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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,提交项目代码后会自动运行该文件打包项目

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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也行

?
1
2
3
4
5
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部署内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/lufeechen/p/10405789.html

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:详解Docker容器数据卷

2023-3-27 11:39:49

建站知识

小知识:Docker自动化构建Automated Build实现过程图解

2023-3-27 12:02:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索