服务端:centos7html
客户端:windowlinux
在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh链接,开发人员只需提交代码,就能够进行项目文件上传,打包镜像,发布运行测试git
安装docker:github
一、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。docker
经过 uname -r 命令查看你当前的内核版本shell
$ uname -r
二、使用 root
权限登陆 Centos。确保 yum 包更新到最新。json
$ sudo yum update
三、卸载旧版本(若是安装过旧版本的话)centos
$ sudo yum remove docker docker-common docker-selinux docker-engine
四、安装须要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的api
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
五、设置yum源浏览器
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
六、能够查看全部仓库中全部docker版本,并选择特定版本安装
$ yum list docker-ce --showduplicates | sort -r
七、安装docker
$ sudo yum install docker-ce #因为repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0 $ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
八、启动并加入开机启动
$ sudo systemctl start docker $ sudo systemctl enable docker
九、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
$ docker version
十、建议更换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/#install-compose
一、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
二、Apply executable permissions to the binary:
sudo chmod +x /usr/local/bin/docker-compose
地址:https://hub.docker.com/r/twang2218/gitlab-ce-zh
一、利用xshell+xftp在centos7中建立存储日志、配置、数据的文件夹
文件夹结构以下:
gitlab -config -logs -data
docker-compose.yml
二、利用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
三、cd到gitlab目录下执行docker-compose up -d启动,稍做等待。。
四、启动完毕后打开浏览器访问gitlab.domain.com
首先咱们须要获得一个SSH Key,输入
cat ~/.ssh/id_rsa.pub
若是出现 ssh-rsa打头的字符,说明本地已经有了SSH Key那咱们能够直接拿来用,若是没有则须要咱们本身建立一个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便可。
正常状况下你已经能够经过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的部署。
地址:https://hub.docker.com/r/gitlab/gitlab-runner
一、利用xshell+xftp在centos7中建立存储日志、配置、数据的文件夹
文件夹结构以下:
gitlab-runner
-config docker-compose.yml
二、利用docker-compose.yml启动
1 version: '3' 2 services: 3 runner: 4 image: 'gitlab/gitlab-runner:v11.4.2' 5 container_name: gitlab-runner 6 restart: always 7 networks: 8 - gitlab_default 9 volumes: 10 - ./config:/etc/gitlab-runner 11 - /var/run/docker.sock:/var/run/docker.sock 12 networks: 13 gitlab_default: 14 external: true
其中gitlab_default为上面gitlab的网络
注意:gitlab-runner的版本要和gitlab尽可能对应否则会出现连不上gitlab
三、cd到gitlab目录下执行docker-compose up -d启动
一、注册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
一、在项目根目录下添加.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
二、在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上