前言
gitlab 11.1
内置了CI/CD
,这个特性从gitlab 8+
就开始有了,不过配置比较琐碎
经过几个大版本的迭代,现在已经简化了使用方式,也修复了一些坑,这个特性大大吸引了我;
gitlab
拥有的特性很齐全,包括了第三方登录,二步验证,SSH
,GPG
签名等等
所以对于好东西不拿来用太对不起自己,于是开始了漫漫的爬坑之路;
由于东西是部署在公司内的,所以就不开放访问了,但是可以参考下我的大体配置;
至于为什么采用docker
来部署,好迁移,升级也方便(因为数据和配置文件是独立的)
前置基础
基础环境
Debian Linux 9
Docker 18.06
,gitlab
镜像用的gitlab
官方提供的gitlab-ce,好处如下- 官方的,用的放心,更新频率高(能与时俱进) - 这个教程用的是当前最新的11.1
- 一键安装(因为类似
postgresql
,ruby
,nginx
)这类的基础的环境都包括进去了 - 只暴露主配置文件/数据库存放位置/还有日志,
- 升级不用考虑数据的问题;对于业务不是很复杂的公司.能快速部署…
倘若想至于从0到1的构建(这种可以更细致针对业务进行配置),但要考虑的东西比较多;
有专业的运维和公司不缺钱的大佬可以折腾
必备知识
Linux
/Docker && Docker Compose
/ Nginx
效果图
构建启动
这块的知识并不是gitlab
,还是docker
的
- 官方教程的基本启动姿势:
detack
: 容器在后台运行并输出容器IDpublish
: 就是暴露端口,简写-p
name
: 容器名restart
: 什么时机会触发容器重启,所有情况volume
: 映射卷的,基本用来持久化数据的
# 官方基本姿势,docker直接启动
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22: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
三个volume
就是暴露的位置
本地位置 | 容器位置 | 作用 |
---|---|---|
/srv/gitlab/data | /var/opt/gitlab | gitlab的数据存放,包括nginx ,postgresql 这些 |
/srv/gitlab/logs | /var/log/gitlab | 日志存放 |
/srv/gitlab/config | /etc/gitlab | gitlab的主配置文件 |
传参启动
hostname
:访问的域名env
: 这里面就是临时提权生效的- 这个就是可以给
gitlab
传入部分参数,让其构建过程读取你设置的值(gitlab.rb
)并且生效 - 官方说这个并不会写入
gitlab.rb
(就是gitlab
的配置文件),只是临时生效(容器生存期间)
- 这个就是可以给
sudo docker run --detach \
--hostname gitlab.example.com \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://my.domain.com/'; gitlab_rails['lfs_enabled'] = true;" \
--publish 443:443 --publish 80:80 --publish 22: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-compose
启动
我偏向于这种,所以写个构建规则,如下
第一版
version: '3.6'
services:
gitlab:
container_name: gitlab
image: gitlab/gitlab-ce:latest