系列文章前言

此 git/gitlab 系列文章,预计会分为 3 个部分

  • gitlab 的安装及常用配置说明

  • Git 入门和高级功能及常见问题的测试与解决

  • gitlab/git 推行使用规范示例

当然不会非常全面,着重于代码托管和合作开发部分。部分章节主用 PPT 说明,可通过相关章节内容去 Github 获取。

虽然目前相关内容很多,不过对于此份内容部分,都是亲自测试并在内部进行了推广测试,比较详实。对于团体希望使用 git/gitlab 管理代码和合作开发,多多少少能有些参考作用;对于个人学习使用 git 和 gitlab,也有更多一点的帮助。

一些测试和功能实现部分,未必是最优解,但的确是一个解,可做参考。

此篇后续十七篇文章,一起入门 git/gitlab 的世界。

如果命令中有诸如 或者 {XXX}的指代,记得把符号一起替换成实际的参数。

Git入门及常用命令、Gitlab用户数据备份与定时备份、gitlab-web基本功能说明、omnibus package安裝gitlab-ce 的cover图源网络。

docker 安装 gitlab-ce

安装 docker

sudo apt install docker.io

安装完成之后,直接使用 docker 命令,可能会出现权限不足(permission denied)。

解决方法,将一般用户加入可用:

sudo usermod –aG docker 

设置完之后,一定要注销用户,再登入,才能生效,生效之后。
ubuntu18 可能需要重启。

更多 docker 常用指令的简单说明,可参看之前使用 《Ubuntu18.04下docker基本指令和使用docker安装mysql》

安装前的清理

因为重头来过,所以,我们先查看下是否有之前安装过的名叫 gitlab 的容器

docker ps 

此处若没有,则没有 gitlab 的 docker;如果有,则用命令:docker rm gitlab移除

抓取官方 gitlab image 并使用 docker 运行容器

直接终端输入指令

docker pull gitlab/gitlab-ce:latest

pull 可能需要一点时间,取决你下载的网速。

下载成功之后,使用docker images命令可以看到下载的 docker 镜像列表。

使用下载好的 images,创建容器,例如:

docker run --detach \
--hostname 192.168.XX.XX \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab-ce/config:/etc/gitlab \
--volume /srv/gitlab-ce/logs:/var/log/gitlab \
--volume /srv/gitlab-ce/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

以上配置了:
hostname:gtilab 的访问地址;
publish:映像主机端口和 docker 中访问 gitlab 的端口;
name:docker 容器名称;
restart:是否自动重启;
–volume:设定创建存放配置、日志、数据的文件夹.

在设定的位置(–volume),会生成以下几个文件夹,如下图

创建的gitlab文件夹

其作用可参考以下:

本地位置 容器位置 用途
/srv/gitlab-ce/data /var/opt/gitlab For storing application data
/srv/gitlab-ce/logs /var/log/gitlab For storing logs
/srv/gitlab-ce/config /etc/gitlab For storing the GitLab configuration files

正常的话,在创建完之后,会自动开启,开启成功之后,效果如下图(当看到 STATUS 为 healthy,表明已经正常启动):

docker正常启动gitlab容器

登入之前创建 container 时的 hostname,可以查看到,如下图:

gitlab初始首页

首次访问时,需要设定 root 管理员的密码,账号默认为 root,修改密码成功之后,则进入到登入画面,即可输入 root 账号密码,进入查看。

如果需要关闭容器,使用 stop 命令,例如停止/开启已有的 gitlab( 例如 docker name 为 gitlab)

docker stop gitlab  # 停止
docker start gitlab # 开启

如果发现启动不了 docker 的 gitlab,并提示端口 22 已被占用,可能就是 sshd 占用了端口。

关闭 ssh 即可:

/etc/init.d/ssh stop

当然,开启就是

/etc/init.d/ssh start

如果配置有错,需要修改 gitlab 的配置文件gitlab.rb,可是使用命令

sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb

去打开文件编辑。不过一旦打开了这个文件,就注意给external_url参数,赋予一个有效的值。就是 gitlab 访问地址需要可用。

修改了配置文件,需要重启该容器使其生效:

docker restart gitlab

备份和还原用户数据

手动备份用户数据

目前除了设定了一个 root 账号的密码之外,其它什么都没有,我现在备份一次此时的 gitlab user data,使用指令

docker exec -it gitlab gitlab-rake gitlab:backup:create

备份成功之后,默认位置在存放 data 的路径下,也就是创建并运行容器时的配置路径:/srv/gitlab-ce/data/backups

在 root 权限或者当前用户取得该文件夹权限后,可以看到该文件夹内部文件,gitlab-ce 备份的用户数据的格式例如:

{时间戳10位}_{年_月_日}_{gitlab版本号}_gitlab_backup.tar

或者可直接使用命令行查看:docker exec -it gitlab ls /var/opt/gitlab/backups/

还原备份的文件

备份之后,后续作业如果出现问题,可以还原到这个原始版本;当然,如果定时备份,则可以随时还原到需要的时间节点版本。

还原命令:

docker exec -it gitlab /opt/gitlab/bin/gitlab-rake gitlab:backup:restore BACKUP={时间戳10位}_{年_月_日}_{gitlab版本号}

BACKUP=后面输入需要返回的备份文件名称

注意,gitlab 只能还原版本相同的备份文件,版本不同不能还原。

使用 docker 安装就像是装在了沙盒,不想要了可以直接删除,没有什么顾虑。但是操作起来比较麻烦,毕竟中间隔了一层。用于测试等轻量使用较宜。