目录
1. 概述
Gitlab是利用Ruby on Rails的一个开源版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释,可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库,团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码版段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
使用说明: https://docs.gitlab.com/ce/README.html (社区版说明)
Docker使用说明: https://docs.gitlab.com/omnibus/docker/README.html
2. 环境
- 使用Docker安装,因为原bin安装非常困难,特别是Ruby on Rails。
- 使用官方版gitlab/gitlab-ce:latest
- 硬件要求: 内存大于2048M,磁盘转数大于5400转。
3. 安装
3.1 拉取镜像
[root@t40 ~]# docker pull gitlab/gitlab-ce:latest
3.2 查看镜像
[root@t40 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce latest 33dd577fc0c8 5 days ago 2.23GB
3.3 运行
3.3.1 run方式
- 这种方式不能直接修改位于/data/gitlab/en/config下的gitlab.rb配置文件,导致很多配置项不能修改,比如,external_url等。
- git clone代码时,ssh因为gitlab.rb中端口没有修改,也不能直接通过ssh拉取代码。只能使用http方式拉取代码。
- 当然可以修改gitlab.rb配置项,但是比较繁琐。不建议使用。
[root@t40 ~]# docker run --detach \
--hostname 192.168.64.40 \
--publish 6443:443 --publish 6080:80 --publish 6222:22 \
--name gitlab-en \
--restart always \
--volume /data/gitlab/en/config:/etc/gitlab \
--volume /data/gitlab/en/data:/var/opt/gitlab \
--volume /var/log/gitlab/en:/var/log/gitlab \
-e 'TZ=Asia/Shanghai' \
gitlab/gitlab-ce:latest
3.3.2 docker-compose方式
- 修改gitlab.rb中的三项内容,以其使 git clone能通过 http、ssh方式同时工作。
- 在宿主机、客户端的hosts文件配置该容器的域名映射 xxx test.gitlab.com
- 推荐使用这种方式。
[root@t40 ~]# cat docker-compose.yml
version: '3'
services:
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: test.gitlab.com
container_name: gitlab-en-compose
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://test.gitlab.com'
gitlab_rails['gitlab_shell_ssh_port'] = 6222
gitlab_rails['time_zone'] = 'Asia/Shanghai'
ports:
- '80:80'
- '8443:443'
- '6222:22'
volumes:
- /data/gitlab/en/config:/etc/gitlab
- /data/gitlab/ec/data:/var/opt/gitlab
- /var/log/gitlab/en:/var/log/gitlab
# 运行
[root@t40 ~]# docker-compose up -d
/usr/lib/python2.7/site-packages/paramiko/transport.py:33: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the next release.
from cryptography.hazmat.backends import default_backend
Creating gitlab-en-compose ... done
# 启动后的容器
[root@t40 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
37173e42a16f gitlab/gitlab-ce:latest "/assets/wrapper" 8 seconds ago Up 6 seconds (health: starting) 0.0.0.0:80->80/tcp, 0.0.0.0:6222->22/tcp, 0.0.0.0:8443->443/tcp gitlab-en-compose
3.4 界面
以下介绍几个重要的页面
3.4.1 登录页面
进入首页设置根用户root的密码(8位)。然后用新密码登录。
3.4.2 创建用户
创建成功后,也可以设置密码,但用新用户在登录时,都必须修改密码。
3.4.3 用户头像
- Gitlab使用Gravatar网站为用户分配头像,勾掉,因为是从外网拉取,比较慢。使用Gitlab的默认头像。
- gitlab默认头像
3.4.4 禁止注册
如果将GitLab发布到公网,而又不希望其他人注册的话(即只能内部人使用,方便内部人远程拉取代码)。进行以下操作。
3.4.5 创建项目
- 创建一个项目test-gitlab
- 在创建好的项目中增加一个readme.md文件。注意观察ssh、http方式中的域名为 docker 容器的hostname,且ssh方式的端口为定义的6222端口。
3.4.6 SSH Clone
在客户端生成ssh-key,有公钥(以pub结尾)和私钥。
- 选择 User Setting。
- 复制公钥
4. 注意事项
4.1 中文社区版
twang2218/gitlab-ce-zh
4.2 配置文件
gitlab的配置文件位于 config/gitlab.rb中。页面上显示的选项就是来源于gitlab.rb。
4.3 域名值
当gitlab.rb中的选项保持默认值时,页面上显示如下内容。
- 新建项目时,浏览器中的域名值与Project URL中的值是相同的,如图
- 在创建好的的项目中,域名值为gitlab所在主机的hostname。用docker运行时,显示的是docker的hostname。