环境
服务端:centos7
客户端:window
在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh连接,开发人员只需提交代码,就可以进行项目文件上传,打包镜像,发布运行测试
一、centos7上安装docker和docker-compose
安装docker:
1、Docker 要求 CentOS 系统的内核版本高于 3.10,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker。
通过uname -r命令查看你当前的内核版本
$ uname -r2、使用root权限登录 Centos 。确保 yum 包更新到最新 。
$ sudo yum update3、卸载旧版本(如果安装过旧版本的话)
$ sudo yum remove docker docker-common docker-selinux docker-engine4、安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm25、设置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

文章插图
8、启动并加入开机启动
$ sudo systemctl start docker$ sudo systemctl enable docker9、验证安装是否成功(有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-compose2、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-datadocker-compose.yml2、利用docker-compose.yml启动
version: '3'services:gitlab:image: 'twang2218/gitlab-ce-zh:11.1.4'restart: unless-stoppedhostname: 'gitlab.domain.com'container_name: gitlabenvironment: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'] = 1022gitlab_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.com3、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-configdocker-compose.yml2、利用docker-compose.yml启动
version: '3'services:runner:image: 'gitlab/gitlab-runner:v11.4.2'container_name: gitlab-runnerrestart: alwaysnetworks:- gitlab_defaultvolumes:- ./config:/etc/gitlab-runner- /var/run/docker.sock:/var/run/docker.socknetworks: 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 register2. 我们会输入 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 = 1check_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 = falseimage = "docker:stable" #这里之所以这样是因为基于这个镜像它包含了docker等工具,可以在gitlab-runner执行的.gitlab-ci.yml中有docker指令时而无需再安装docker 参考地址:https://docs.gitlab.com/ee/ci/docker/using_docker_build.htmlprivileged = false #使用docker-in-docker时通常为truedisable_cache = falsevolumes = ["/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:stableimage: 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-recreate2、在win10上通过git提交代码
cd到项目根目录,如果有安装git的话可以直接在根目录下打开git bash 执行,如果没有安装打开powershell也行
git init #如果还没有初始化git add . #把项目都添加进去git commit -m "init" 提交到gitgit 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部署详解的文章就介绍到这了,更多相关docker gitlab gitlab-runner部署内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
