环境
服务端:centos7
客户端:window
在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh连接,开发人员只需提交代码,就可以进行项目文件上传,打包镜像,发布运行测试
一、centos7上安装docker和docker-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 |
|---|
6、可以查看所有仓库中所有docker版本,并选择特定版本安装
| 1 | $ yum list docker-ce --showduplicates | ``sort -r |
| - | --------------------------------------------------------
7、安装docker
| 123 | $ ``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 |
|---|
8、启动并加入开机启动
| 12 | $ ``sudo systemctl start docker`` $ ``sudo systemctl ``enable docker |
|---|
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
| 1 | $ docker version |
|---|
10、建议更换docker的镜像源:
1.修改或创建daemon.json文件:vi /etc/docker/daemon.json\
将以下配置写入到文件中,保存并退出(不会操作的百度下vi命令吧):
| 12345 | { ``"registry-mirrors"``: [``"http://hub-mirror.c.163.com"``] } |
|---|
2.重启docker:systemctl restart docker
安装docker-compose:
参考官网:docs.docker.com/compose/ins…
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中文版镜像
地址:hub.docker.com/r/twang2218…
1、利用xshell+xftp在centos7中创建存储日志、配置、数据的文件夹
文件夹结构如下:
| 12345 | 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,输入
| 1 | cat ~/.``ssh``/id_rsa``.pub |
|---|
如果出现 ssh-rsa打头的字符,说明本地已经有了SSH Key那我们可以直接拿来用,如果没有则需要我们自己创建一个SSH Key。
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即可。
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的部署。