我这里使用的系统是centos7
首先安装docker,docker-compose(非必须,但是使用它可以简化镜像启动参数),需要注意的是docker-compose安装依赖Python的pip,所以具体操作系统可以具体百度怎么安装,我在这里就不在赘述了!
你想安装哪个gitlab
汉化版:docker pull beginor/gitlab-ce:11.1.4-ce.0
原版: docker pull gitlab/gitlab-ce
看你选择哪个,汉化版更新比较慢,原版的话就是纯英文
docker pull 的过程会比较久,视网络情况决定!
自定义docker-compose.yml配置文件
如上图,具体内容如下:
version: "2"
services:
gitlab:
build: .
ports:
- "8443:443"
- "8090:80"
- "4422:22"
container_name: gitlab
image: gitlab/gitlab-ce:latest
volumes:
- /data/gitlab/etc:/etc/gitlab
- /data/gitlab/log:/var/log/gitlab
- /data/gitlab/data:/var/opt/gitlab
上面各个参数的含义可自行了解这里就不赘述了
创建完改文件后,在当前目录启动镜像,使用命令
docker-compose up -d
稍等片刻,打印gitlab 即表示启动镜像成功!
然后使用命令
docker ps
可以看到启动的gitlab镜像!
配置gitlab
由于上面我们在docker-compose.yml文件中配置了卷映射,所以我们在修改配置文件的时候,都是在宿主机目录上进行的,当然每个人的映射也会有所区别
所以我下面所讲的修改配置,都是以gitlab容器内的路径来说,各位可以依照自己定制的映射,在宿主机上进行修改配置
重要的事情说三遍:
下面的地址是容器内的地址,请根据配置在对应的宿主机上的目录内进行修改
下面的地址是容器内的地址,请根据配置在对应的宿主机上的目录内进行修改
下面的地址是容器内的地址,请根据配置在对应的宿主机上的目录内进行修改
root@31998c3f2a6e:/# vim /etc/gitlab/gitlab.rb
将external_url 修改为服务器IP地址
将 gitlab_rails 修改为 4422(也就是上面docker-compose.yml配置中跟22对应的端口)
vim /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
找到关键字 * ## Web server settings *
将host的值改成映射的外部主机ip地址和端口,这里会显示在gitlab克隆地址
配置完成,这个时候我们进行更新配置
首先要做的是进入容器内部
[root@localhost gitlab]# docker exec -it gitlab bash
进入之后,执行三条命令:
gitlab-ctl reconfigure #花时间比较多
gitlab-ctl restart #改IP重启就可以了
gitlab-ctl status
接下来访问和配置
当看到启动的容器后,在浏览器输入服务器IP,和上面配置的端口(8090),进行访问 :
一般来说就三种情况:
1.访问不到(这个原因是可能容器还没启动完成,稍稍等待!)
2.页面显示502(这个原因是因为gitlab对服务器配置要求比较高,2g内存只是堪勘够用,建议4g内存,2核。不同的配置支持的用户数量也不一样,所以根据自身情况制定硬件的分配吧)
3.进入设置密码页面(恭喜你,gitlab容器启动成功,这个设置密码设置的是root的密码,设置完成之后就可以直接登录了,root用户可以创建项目和创建用户,如果经常使用github的话,gitlab也会很快上手的)
关于使用
成功访问之后,就可以试着创建项目了,创建项目前,先把本地的ssh-key配置到gitlab中,这个跟github是一个套路
然后就可以创建项目了,这个就比较简单了,就不赘述了,这里我创建了一个Test项目
这里肯定有人会想我这个项目保存到哪里了呢?
gitlab的仓库保存路径,其实是在 /etc/gitlab/gitlab.rb (容器中的路径)文件中的
可以看到,仓库的保存路径是在容器内的 /var/opt/gitlab/git_data中的
而我们在前面docker-compose.yml中的volumes 中配置了
所以我可以在宿主机上找到仓库位置:
可以看到test.git就是我们创建的仓库,他是在宿主机的目录上的,所以当项目很大的时候,可以将 /data/gitlab 单独挂在到一个大的分区,或者挂NAS
需要注意的是路径中的root表示的是创建这个仓库的用户是谁。
当配置好可ssh-key之后就可以使用git clone 去克隆代码了