最近在研究GitBook,GitBook 作为一个简单发布的电子书功能,还是非常好用的,所以在这个基础上,开始尝试搭建GitBook环境,当然,这里并不主要介绍GitBook环境的搭建, 而是做一整套GitBook 自动化发布的整套服务。
我们会使用到 Docker, Git + GitLab + GitLab-Runner + GitBook 一整套环境,因为只有一台服务器,所以这里对GitLab 以及 GitLab-Runner在Docker中进行发布
Docker 自打收费起,对于 Centos 系统中,yum 安装 docker 是会存在问题的,比如 docker-compose 不可以使用等,所以我们需要改变一下 Docker 安装方式--> 官方文档
内容中写到2种方式
1,增加 yum 安装源
2,下载 DOCKER CE 安装包
任远一种,都是没有任何问题的,这里不再阐述安装过程
Docker 安装完毕后,我们开始对 GitLab 进行安装, 主要还是在 Gitlab 官网查看安装方法 --> 中文文档 官方文档
GitLab 我们的第一主角,后面对会 Runner 进行介绍
1,GitLab 是主要的文档,使用手册
2,Omnibus 主要是对环境集成做简介
3,Runner 针对CICD 服务的应用
我们直接开始部署环境,对于运行环境, 我们直接使用官方Docker镜像就好
#下载镜像
docker pull docker.io/gitlab/gitlab-ce:latest
#运行镜像
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 8929:80 --publish 2289:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
docker 命令我就不讲解了,这里说明下,docker 收费后,区分除了2个版本,企业版/ 社区版,我们使用的是社区版, 也就是 CE 版本,EE 版本为企业版本。
注意事项:
GitLab 除了 Web 访问地址意外,还需要看 project 的仓库地址,这里的Web地址不能直接作为仓库地址使用的,且我们使用的是 Docker 容器,所以项目的仓库地址会成为 容器的 内部IP 地址,所以,官方给出的解决方案是容器配置 --hostname ,那么 Git 项目的地址就会变为 --hostname 配置的地址,最好配置成网址,这样比较方便更改地址。
关于仓库地址的另一个坑,就是 --hostname 端口号问题,目前最新版本是不可以直接映射端口号的,这里需要注意,解决方案,个人觉得还是使用 Nginx 代理最好,因为这里 项目 地址端口是 80, 用 Nginx 代理, 就没所谓我们端口问题,可以随意映射。
别忘了防火墙和端口开放!!!
Docker 容器运行起来以后,我们可以访问 http://gitlab.example.com:8929 访问 GitLab 了,如果加上 Nginx,那我们就不用再使用端口号了。
第一次访问,我们需要直接设定 root 用户密码(超级管理员,用户账号是 root,直接设置密码即可),然后再注册一个普通用户来进行项目操作即可。
当然,我们还可以使用 docker-compost 来对容器进行运行,关闭,删除等操作。docker-compose 以后再做介绍。
接下来,开始安装 GitLab-Runner
GitLab 很好理解,主要是项目代码管理工具,Runner 是GitLab的插件,用来 CI/CI 相关操作的
#下载镜像
docker pull docker.io/gitlab/gitlab-runner:latest
#官方给的docker运行命令
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner:Z \
gitlab/gitlab-runner:latest
-------------------------------------------------------------
#我的运行命令
docker run -dit \
--name gitlab-runner \
--network=myothernetwork \
--ip 172.18.0.20 \
--restart always \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 \
-v ~/gitlabrunner/config:/etc/gitlab-runner \
-v ~/gitlabrunner/build_cache:/cache \
docker.io/gitlab/gitlab-runner:latest
#在启动的容器中,将gitlab-runner 用户加到 root 组中,对于docker的使用是很必要的,否则无法使用
sudo docker exec -it gitlab-runner usermod -aG root gitlab-runner
注意:
个人建议,可以将缓存和宿主机(服务器)docker 的运行文件挂载到服务器内,可能会使用到。
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
在gitlab-runner 容器启动后,gitlab-runner 编译使用的用户名也是 gitlab-runner,所以,我们需要把该用户添加到 root 组中,否则 docker 是无法使用的
sudo docker exec -it gitlab-runner usermod -aG root gitlab-runner
此时,GitLab 与 GitLab-Runner 不出意外情况下已经成功启动起来了
注:GitLab 与 GitLab-Runner 会分别运行在2个容器中
致:踩过的那些坑
可以看我的码云:去码云看看
本章到此结束